레이블이 linux인 게시물을 표시합니다. 모든 게시물 표시
레이블이 linux인 게시물을 표시합니다. 모든 게시물 표시

2016년 2월 26일 금요일

Nginx Webalizer for geoip setting


When i use nginx & webalizer

Country data graph "country unresolved/Unkown" 100%.

this problem can fix using change settings.

1. Check Nginx module

$nginx  -V
nginx version: nginx/1.4.6 (Ubuntu)
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04)
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module

Nginx must include http_geoip_module module.

2. Download GeoIP databases

$mkdir /etc/nginx/geoip && cd /etc/nginx/geoip
$wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
$wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
$gunzip GeoIP.dat.gz
$gunzip GeoLiteCity.dat.gz

3. Configure Nginx 

-add configure code
$nano /etc/nginx/nginx.conf

...
http {
        ....
        ##
        # geoip settings
        ##
        geoip_country   /etc/nginx/geoip/GeoIP.dat;             # the country IP database
        geoip_city      /etc/nginx/geoip/GeoLiteCity.dat;       # the city IP database
        ...
}

-add configure code
$nano /etc/nginx/fastcgi_params

...
### SET GEOIP Variables ###
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;

fastcgi_param GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;
fastcgi_param GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3;
fastcgi_param GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name;
fastcgi_param GEOIP_REGION $geoip_region;
fastcgi_param GEOIP_CITY $geoip_city;
fastcgi_param GEOIP_POSTAL_CODE $geoip_postal_code;
fastcgi_param GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
fastcgi_param GEOIP_LATITUDE $geoip_latitude;
fastcgi_param GEOIP_LONGITUDE $geoip_longitude;

-add configure code
$nano /etc/nginx/proxy_params

....
### SET GEOIP Variables ###
proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code;
proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3;
proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name;

proxy_set_header GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;
proxy_set_header GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3;
proxy_set_header GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name;
proxy_set_header GEOIP_REGION $geoip_region;
proxy_set_header GEOIP_CITY $geoip_city;
proxy_set_header GEOIP_POSTAL_CODE $geoip_postal_code;
proxy_set_header GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
proxy_set_header GEOIP_LATITUDE $geoip_latitude;
proxy_set_header GEOIP_LONGITUDE $geoip_longitude;

4. Nginx reload!

$service nginx reload

5. + Webalizer configure

...
GeoIP           yes

# GeoIPDatabase specifies an alternate database filename to use by the
# GeoIP library.  If an absolute path is not given as part of the name
# (ie: starts with a leading '/'), then the name is relative to the
# default output directory. This option should not normally be needed.

GeoIPDatabase   /etc/nginx/geoip/GeoIP.dat
...

6. test result



Good Luck!





2016년 2월 5일 금요일

Nginx 폴더 지정해서 디렉토리 리스팅하기


Nginx 를 이번에 사용하게 되었는데요.

Nginx를 이용해서 폴더에 있는 파일을 받을 수 있게 하려합니다.

mac OS에서 테스트할때의 nginx 의 nginx.conf 파일은
/usr/local/etc/nginx/nginx.conf 경로에 있었습니다.

리눅스 우분투(Ubuntu)의 경우는
/etc/nginx/nginx.conf 경로에 있었습니다.

nginx.conf 파일을 보겠습니다.

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    include servers/*;
}

위와 같이 nginx.conf 파일이 있을텐데요.

이 파일에서 코드 조금만 추가해주면 됩니다. (원래 하려고 했던 파일 제공만 하면되니까요.)

http {
}
이 괄호 안에 추가해주시면 되는데요
저는 이렇게 코드를 추가했습니다.

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;

    server {
        ...
    }
    server {
        listen      8000;
        server_name localhost;

        location /datas/ {
                root /Users/moon1000_mac_mini/Desktop/datas;
                autoindex on;
        }
    }
    ...
    include servers/*;
}


위에서 제가 추가한 부분만 보면
server {
        listen      8000;
        server_name localhost;
        location /datas/ {
                root /Users/moon1000_mac_mini/Desktop/datas;
                autoindex on;
        }
}

위의 코드는
/datas/ 의 위치를 공개하겠다.
autoindex on 은 인덱스 페이지를 보여주는 것입니다.
그 외에는 공유가 안됩니다.
저 위치로 가보면,

Index of /datas/


../
img/                                             04-Feb-2016 07:34                   -
d3.zip                                           04-Feb-2016 07:34             8958481
d4.zip                                           04-Feb-2016 07:34            10485198
d5.zip                                           04-Feb-2016 07:34            15769563
d6.zip                                           04-Feb-2016 07:34            10722878
d7.zip                                           04-Feb-2016 07:34             9166886

이렇게 나옵니다.

다른 어려운 부분이 있다면 질문주세요.
Good luck!


vnstat - monitor for linux, BSD

http://humdi.net/vnstat/

vnstat - vnStat is a console-based network traffic monitor for Linux and BSD that keeps a log of network traffic for the selected interface(s).

1. Ubuntu install vnstat

$sudo apt-get install vnstat


2. vnstat command

$vnstat --help
 vnStat 1.11 by Teemu Toivola <tst at iki dot fi>

         -q,  --query          query database
         -h,  --hours          show hours
         -d,  --days           show days
         -m,  --months         show months
         -w,  --weeks          show weeks
         -t,  --top10          show top10
         -s,  --short          use short output
         -u,  --update         update database
         -i,  --iface          select interface (default: eth0)
         -?,  --help           short help
         -v,  --version        show version
         -tr, --traffic        calculate traffic
         -ru, --rateunit       swap configured rate unit
         -l,  --live           show transfer rate in real time


See also "--longhelp" for complete options list and "man vnstat".


$vnstat
Database updated: Fri Feb  5 00:05:49 2016

   eth0 since 02/05/16

          rx:  80 KiB      tx:  61 KiB      total:  141 KiB

   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       Feb '16        80 KiB |      61 KiB |     141 KiB |    0.00 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated        --     |      --     |      --     |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
         today        80 KiB |      61 KiB |     141 KiB |    3.23 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated        --     |      --     |      --     |

$vnstat -h
eth0                                                                     00:10
  ^                                                                       r
  |                                                                       r
  |                                                                       r
  |                                                                       r
  |                                                                       r
  |                                                                       rt
  |                                                                       rt
  |                                                                       rt
  |                                                                       rt
  |                                                                       rt
 -+--------------------------------------------------------------------------->
  |  01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 00

 h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB)
01          0          0    09          0          0    17          0          0
02          0          0    10          0          0    18          0          0
03          0          0    11          0          0    19          0          0
04          0          0    12          0          0    20          0          0
05          0          0    13          0          0    21          0          0
06          0          0    14          0          0    22          0          0
07          0          0    15          0          0    23          0          0

08          0          0    16          0          0    00        178         96

Goooooooooooood.


2016년 2월 1일 월요일

Ubuntu, install jdk 1.8.x



$sudo add-apt-repository ppa:webupd8team/java
$sudo apt-get update
$sudo apt-get install oracle-java8-installer

You will see some agreement, yes to all

After installation finished,
$java -version

java version "1.8.0_72"
Java(TM) SE Runtime Environment (build 1.8.0_72-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.72-b15, mixed mode)

Good luck!

2016년 1월 21일 목요일

MongoDB install on Ubuntu 14.04 LTS

MongoDB install on Ubuntu 14.04 LTS

Install MongoDB

1. Use apt-get install
https://docs.mongodb.org/master/tutorial/install-mongodb-on-ubuntu/?_ga=1.5459123.1233507774.1453343859

I just run
$apt-get install mongodb

If you want to start,
$sudo services mongodb start


2. Use tallball
https://docs.mongodb.org/manual/tutorial/install-mongodb-on-linux/

I started at /home/pineoc

$curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.1.tgz

$ tar -zxvf mongodb-linux-x86_64-3.2.1.tgz

$mkdir -p mongodb
$cp -R -n mongodb-linux-x86_64-3.2.1/ mongodb

$nano ~/.bashrc

add text to .bashrc
****************************************************************
...
...
export PATH=/home/pineoc/mongodb/bin:$PATH

If you want to start,

$mkdir -p /data/db
$mongod

good luck!

2015년 12월 30일 수요일

Arch Linux 개인적인 공부2


Arch 리눅스에 대한 개인적인 공부 두번째 입니다.

저번에 포스팅했던 내용은 2년전에 공부했다고 썼던 포스트였지만
그냥 위키에 있는 내용을 가져다 쓴 정도 였습니다.

이번에 다시 한번 Arch 리눅스를 공부해보려합니다.

Arch 리눅스는
URL: https://www.archlinux.org/








Arch 리눅스 사이트에서 보면
이 리눅스에 대해 이렇게 설명하고 있습니다.

About Arch Linux

Arch Linux is an independently developed, i686/x86-64 general purpose GNU/Linux distribution versatile enough to suit any role. Development focuses on simplicity, minimalism, and code elegance. Arch is installed as a minimal base system, configured by the user upon which their own ideal environment is assembled by installing only what is required or desired for their unique purposes. GUI configuration utilities are not officially provided, and most system configuration is performed from the shell by editing simple text files. Arch strives to stay bleeding edge, and typically offers the latest stable versions of most software.
Arch Linux uses its own Pacman package manager, which couples simple binary packages with an easy-to-use package build system. This allows users to easily manage and customize packages ranging from official Arch software to the user's own personal packages to packages from 3rd party sources. The repository system also allows users to easily build and maintain their own custom build scripts, packages, and repositories, encouraging community growth and contribution.
The minimal Arch base package set resides in the streamlined [core] repository. In addition, the official [extra], [community], and [testing] repositories provide several thousand high-quality, packages to meet your software demands. Arch also offers an [unsupported] section in the Arch Linux User Repository (AUR), which contains over 9,000 build scripts, for compiling installable packages from source using the Arch Linux makepkg application.
Arch Linux uses a "rolling release" system which allows one-time installation and perpetual software upgrades. It is not generally necessary to reinstall or upgrade your Arch Linux system from one "version" to the next. By issuing one command, an Arch system is kept up-to-date and on the bleeding edge.
Arch strives to keep its packages as close to the original upstream software as possible. Patches are applied only when necessary to ensure an application compiles and runs correctly with the other packages installed on an up-to-date Arch system.
To summarize: Arch Linux is a versatile, and simple distribution designed to fit the needs of the competent Linux® user. It is both powerful and easy to manage, making it an ideal distro for servers and workstations. Take it in any direction you like. If you share this vision of what a GNU/Linux distribution should be, then you are welcomed and encouraged to use it freely, get involved, and contribute to the community. Welcome to Arch!
위의 내용을 좀 보자면,

Arch 리눅스는
단순함과 미니멀리즘, 코드의 아름다움에 집중되서 개발되었고
작은 환경에 설치될 수 있는 리눅스입니다.

Arch 리눅스는 Pacman 이라는 패키지 매니저를 사용합니다.
(첨언, Ubuntu의 apt나 CentOS의 yum과 같은 패키지 매니저를 말합니다)

Arch 리눅스는 rolling release 시스템을 이용해서 설치하고, 업그레이드합니다.
(rolling release는 소프트웨어 개발 모델 중의 하나로 계속해서 개발하거나 업데이트하는 것을 말합니다.)

그외에 내용은 그다지 중요한 내용은 아니네요.
Arch 리눅스는 좋다라는 내용인거 같습니다.

설치하는 방법에 대한 URL:
https://wiki.archlinux.org/index.php/Installation_guide

초보자들을 위한 가이드도 있습니다.
https://wiki.archlinux.org/index.php/Beginners%27_guide

초보자 가이드보고 진행할 수 있지만
영어로 다 되어 있어서...
한글로 되어있는곳을 찾았지요
https://wiki.archlinux.org/index.php/Beginners'_guide_(%ED%95%9C%EA%B5%AD%EC%96%B4)

공부라고하긴했지만

나중에 설치하는 것 포스팅해보겠습니다.






2015년 12월 28일 월요일

Arch Linux에 대한 개인적인 공부


Arch Linux는 보통 arm(핸드폰이나 임베디드에 사용되는 프로세서)에서 
사용되는 것 같이 보이며
(arm에 적합한것으로 보이는 간결함..? 정확하지 않습니다.)

wiki에서 찾아보면

아치 리눅스(Arch Linux)는 i686과 x86-64용 리눅스 기반 운영체제이다.
개발팀은 사용자 관점보다는 개발자 관점에서 간결함에 중점을 두며, 우아함, 코드 정확성 및 최소주의를 추구한다. 아치 리눅스는 자체 꾸러미 관리자인 팩맨(pacman)을 사용해 꾸러미를 설치·제거·갱신한다. 롤링 릴리스 모델을 사용하므로 최신 소프트웨어를 설치하려면 시스템 갱신만 하면 된다. 아치 개발팀에서 배포하는 설치 이미지는 단순히 주요 시스템 구성 요소의 최신 버전을 저장한 것이다. 아치 리눅스는 우분투나 페도라처럼 기본 데스크톱 환경을 채택하지 않기 때문에 사용자가 아치 리눅스를 설치할 때 자신의 필요에 맞는 데스크톱 환경을 선택하여 설정한다.


간결함에 중점을 두며... 시스템 구성 요소의 최신버전을 저장..
오라클하고 DB도 이것저것 안깔려있는게 많아서 
초보 리눅서는 힘들어 보이는 OS입니다..ㅎㅎ

맞네요ㅎㅎ 
i686 과 x86-64 용 리눅스 기반 운영체제!
i686은 마이크로 아키텍쳐를 말하며 x86-64는 64비트의 운영체제를 말합니다.

다음포스팅에 아크 리눅스 설치기!

아크 리눅스 : www.archlinux.org

리눅스 계열_Linux (레드헷 vs 데비안)


레드헷 계열 vs 데비안 계열

레드햇 계열 : 레드헷, 센트 OS(Cent OS), Fedora(페도라), Oracle Linux

데비안 계열 : 우분투(Ubuntu), 린스파이어, 크노픽스, 핀닉스, 등등

다른 계열도 많지만 흔히 볼 수 있는 것만 정리합니다.

유닉스(Unix) : 연구 목적으로 만들어진 운영체제, 현재는 다양한 비영리 단체,
대학에서 만든 버전이 있습니다. 그 예로는 Linux, BSD, FreeBSD 등이 있습니다.

윈도우즈(windows) : Mac OS 대항 하기 위해 MS-DOS로 시작하여 GUI를 도입, 그후에 윈도우 NT 등 발전.

위의 블로그를

Redhat 경우 RPM(Redhat Package Manager)이라고 해서 설치하는데 편의성 좋은 것이 있어서
설치 할때는 좋은데 의존성이 이리저리 꼬이게 되면 다시 설치해야하거나 
패키지 의존성을 고려해서 설치해야하는 단점이 있습니다.

Debian 경우에 이러한 의존성문제를 해결. dpkg, dselect, apt를 가지고 
패키지 설치시 의존성에 걸려있는 패키지들을 자동으로 알려주고 
차례차례 설치하며 설정파일들을 생성해줍니다.
단점은 패키지의 업데이트가 느리다는것. 
프로그램의 패키지 의존성이나 그런 것들을 분석하고 나오기 때문에 업데이트가 느려요.

젠투(Gentoo Linux)
FreeBSD Port 시스템 기초로 Portage라는 개념의 파일 시스템을 사용합니다.
설치가 어려워 중급이상의 리눅서들이 사용해요.

Linux programming study(리눅스 프로그래밍 스터디)


리눅스 공부 겸 만든 자료입니다.

동아리에서 공부할 때 만든건데 공유합니다.

http://www.slideshare.net/yunseokl1/linux-programming-study


2015년 12월 27일 일요일

Shell(셸, 쉘)


쉘의 종류에는 크게 본 쉘(Bourne Shell), 콘 쉘(Korn Shell), C 쉘(C Shell) 이 있다.

쉘의 기능에는 
- 자체의 내장 명령어 제공
- 입력/ 출력/ 에러의 리다이렉션 기능
- 와일드카드 기능
- 파이프라인 기능
- 조건부/무조건부 명령열 작성기능
- 서브쉘 생성
- 백그라운드 처리 가능
- 쉘 스크립트(program) 작성 가능

------------------------------------------------------------------------------------------------------------
쉘 관련 명령어.

- echo $SHELL :         자신이 사용하고 있는 셸 확인.
- env :                    사용하고 있는 셸에 대한 정보 보기.
- `(역따옴표) :            우선 책에는 언급 안되어 있으므로 나중에 찾아서 자세히 볼것.
- 리다이렉션 >, >> :      >은 덮어 씌우기 형식으로 입력한 값들이 원래있던 내용을 지우고 저장되는방식.
                             >>은 이미 작성되어 있는 파일 내용 뒤에 첨부하는 형식으로 저장.
- 파이프 라인( | ) :       ex ) ls -al | more 을 사용시 ls -al 의 명령어가 more 로 보내져 처리.

2015년 9월 6일 일요일

리눅스에서 사용하던 파일시스템을 윈도우에서 사용하기

이번에 리눅스에서 마운트하고 사용했었던 USB를 윈도우에서 사용하려고 하는데 안되더군요

찾아봤더니 파일시스템이 맞지 않아서 포맷도 해봤자 일정영역밖에 안되서

리눅스 시스템가서 

#fdisk /dev/sdX

그후에 파티션 다 지워주시고
하나만 만드신후에

#mkfs.vfat /dev/sdX1 하시면

윈도우에 인식이 됩니다.

생각보다 간단한건데 생각을 못하고 끙끙대다가 잘 해결했네요 ㅎㅎ

#######################################################################
결론,
mkfs.vfat 을 이용한 포맷을 해야 윈도우에 인식이 됨.

jobs-현재 터미널에서 동작되고 있는 프로세스 목록 출력

jobs
-현재 터미널에서 실행되거나 정지되있는 프로세스의 목록 출력

Usage : 
jobs: 사용법: jobs [-lnprs] [jobspec ...] or jobs -x command [args]

$ job
[1]   실행중               sleep 300 &
[2]   실행중               sleep 400 &
[3]-  정지됨               sleep 500
[4]+  정지됨               sleep 600

이런식으로 출력이 됩니다.

명령어의 옵션은


OptionDescription
-lShow process id's in addition to the normal information.
-pShow process id's only.
-nShow only processes that have changed status since the last notification are printed.
-rRestrict output to running jobs only.
-sRestrict output to stopped jobs only.
-xCOMMAND is run after all job specifications that appear in ARGS have been replaced with the process ID of that job's process group leader.


예를 들어 위의 출력 값에서 PID를 알고 싶다면
$jobs -l
[1]  32225 실행중               sleep 300 &
[2]  32226 실행중               sleep 400 &
[3]- 32227 정지됨               sleep 500
[4]+ 32228 정지됨               sleep 600

이런식으로 옵션을 주시면 됩니다.

백그라운드에서 작업중인 프로세스만 보고 싶다면
$jobs -lr
[2]  32226 실행중               sleep 400 &

정지된 작업만 보고 싶다면
$jobs -ls
[3]- 32227 정지됨               sleep 500
[4]+ 32228 정지됨               sleep 600

jobs에 대한 기능은 이정도입니다.

추가적으로.
이번에 과제 때문에 공부한 부분인데

쉘 스크립트에서 사용하지 못하고 ( 쉘 프로그래밍에서 사용 못함 )
system() 함수에서도 사용하지 못하는 것을 알게되었습니다.

~/pineoc$ which ls
/bin/ls
~/pineoc$ which jobs
(없음)

which 라는 명령어로 이 명령어가 어디있나 확인해봤는데 없더군요..ㅎㅎ
type 이라는 명령어를 이용해서 알아봤는데
(type : 지정된 명령어가 쉘에 내장된 명령어인지, 외부 명령어인지, alias 명령어인지 등을 확인하는 명령어입니다)

~/pineoc$ type man ls cd jobs
man is hashed (/usr/bin/man)
ls 은/는 `ls --color=auto' 의 별칭
cd is a shell builtin
jobs is a shell builtin

결과는 이렇게 됬는데...
cd와 같은 shell 내장 명령어라고 합니다.. 근데 안되네요..ㅎㅎ
bash에서는 되는데 sh 쉘에서는 안되서 system()함수나 shell 스크립트에서 안되는 것으로 보입니다.

그 외에도 fg, bg등의 job control 함수도 마찬가지로 안되는 것 같습니다.

참고
~/pineoc$ sh -c "ls -al"
합계 56
drwxrwx---  9  4096 2014-05-07 12:17 .
drwxrwx--- 16  4096 2014-04-13 00:30 ..
drwxrwx---  2  4096 2012-07-26 20:02 7_26
drwxrwx---  2  4096 2012-08-02 17:32 8-2
drwxrwx---  2  4096 2012-11-20 03:09 assem
drwx------  4 4096 2014-05-05 23:32 
drwxrwxr-x  2 4096 2013-11-19 15:28 shellProgramming
-rwxrwxr-x  1  8430 2014-05-07 12:17 test
-rw-rw-r--  1   112 2014-05-07 12:17 test.c
-rwxrwxrwx  1   18 2014-05-07 12:15 test.sh
drwxrwx---  7 4096 2012-11-29 13:56 unix
drwx------  2  4096 2013-11-25 20:01 
~/pineoc$ sh -c "jobs -l"
~/pineoc$
system()함수의 기능이 /bin/sh -c "string" 을 호출하여 명령어를 실행하고, 끝난후 반환하는데
ls는 잘되지만 jobs는 안되는 것으로 보입니다.

그리고 프로그래밍으로 system() 함수를 사용해서 리턴 값을 확인해본 결과
리턴 값이 0이 나왔는데, 이는 shell을 이용할 수 없는 커맨드라는 의미라고 합니다.
(간단하게 test.sh에 jobs -l 을 넣고 돌려봤는데 이러한 결과가 나왔습니다.)

리눅스에 apache2 설치하기

apache 서버(apache http 서버)는 말 그대로 http 웹서버 입니다.
 저는 리눅스에 apache를 설치해서, 간단한 페이지나 아파치 내부 디렉토리 리스팅해주는 것을 이용하여 동영상을 보려고 합니다.
 OS : Ubuntu #설치 우분투에서 패키지를 설치할 때 사용하는 apt-get install 을 사용하여 설치합니다.
$ sudo apt-get install apache2 ** 바이너리를 이용하여 설치하는 경우는 http://httpd.apache.org/docs/2.2/ko/install.html 위의 링크를 참고하시면 될 것 같습니다.

아파치 서비스를 실행 시키기 위해서, $/etc/init.d/apache2 start 아파치를 start 시켜 줍니다. 그러고 해당 서버 아이피 들어가보시면 index.html이 보여질 겁니다.
#설정 http://httpd.apache.org/docs/2.2/vhosts/ http://httpd.apache.org/docs/current/vhosts/examples.html

그리고 위의 링크는 세팅파일에 대한 정보입니다.

해당 설정파일 위치는 /etc/apache2/site-enabled/000-default 으로 위의 설정파일을 바꾸면 포트나 도메인을 바꿀 수가 있습니다.

아, 그리고 제가 사용하려는 이유!
아파치 서버는 디렉토리 리스팅을 설정해주면 해당 위치에 폴더, 파일들을 보여주는데요 그안에 있는 파일 중에 동영상이나 음악파일을 누를경우 스트리밍을 해줍니다!

 

동영상 누르면 동영상 나옵니다! ㅎㅎ (스마트폰은 동영상이 나오는데 크롬으로 봤을땐 동영상이 다운로드 되네요..ㅎㅎ) 정확히는 스트리밍의 개념은 아닌거 같지만 필요하다면 사용할 수 있는 기능인 것 같습니다.

JIRA Plugin - ScriptRunner 소개 #2

관련 글 소개 #1:  https://pineoc.blogspot.com/2019/03/scriptrunner-1.html ScriptRunner 소개 #2 지난 글에서는 Behaviours를 보았고 다음 내용인 콘솔, 리스너 등을 ...