1, defunct process


어떤 특정 child process가 자신의 일을 종료하였지만, 


그 종료된  결과 또는 상태를 자신을 만들어준 parent process에게 보고 한후 종료 하려하지만


그 parent 프로세스는 child 프로세스를 기다려주지 않을 경우 이 프로세스는 defunct 라는 모양으로 보여지게 됩니다.


즉 자신에게 주어진 모든 일을 완수는 하였지만, 무슨 이유에서건


(parent가 child보다 먼저 프로세스를 종료하고 없어진 경우, child로 부터의 return값을 받기위해 

wait() system call을 통해서 기다려 주지 않는 경우 등)


자신의 child process를 monitoring해 주지 않으면,  이 프로세스는 쉽게 말해 고아인 프로세스가 되어, 


이 프로세스가 수행되기 위해 할당되었던 모든 환경들은 release 하였지만 프로세스 테이블로 부터는 제거되지 않은 상태로 남게된 프로세스를 말합니다.



2. zombie process가 만들어지는 두가지 발생 경우 


A. zombie process가 되어 버린 경우

  주어진 모든 일을 완수하고 wait 시스템 콜을 사용하여 자신으로 부터의 결과를 기다리는 parent 프로세스가 없으면 ps -l 에서 보여주는 결과에는 "Z" 상태에 있음을  보여 줍니다.


[해결 방법]

이런 경우에는 kill -18를 하여 zombie 프로세스를 없애 버릴수 있으며, 

만약 parent의 PID가 1번이 아니라면 parent 자체를 kill 함으로써 

init 프로세스에게 zombie 프로세스를 clean up 시키도록 할수 있습니다. 



B. 프로세스가 자신의 일을 종료는 하였지만 정상적으로 exit 또는terminate 되지 못한 상태에 있는 경우(즉 할당된 모든 커널자원들을 해제하지 못한 경우)  

이 원인은 일반적으로 어떤 특정 디바이스와의 통신중에 발생하며, 이는 드라이버 프로그램의 bug 이거나 통신선로 상의 데이타들이 XOFF만을 만나게 되어 flushing되지 못했을 경우에 발생됩니다.


[해결 방법]

이런 상태에 있는 것들은 ps -l 에서보면 "S" 상태에 있게 됩니다.이럴때는  (XON)를 보내거나, 현재 묶여져 있는 모든 프로세스들을 kill 시키고 새로운 getty 프로세스를 생성시킴으로써 hung up 현상을 제거 시킬수 있는 경우도 있지만 원하는 결과가 나오지 않는 다면 시스템을 재시동(reboot) 시키는 방법 만이 있을 뿐입니다.


출처: http://twinstarbox.tistory.com/entry/Unix-defunct-프로세스 [쌍둥이별의 보물상자]

Posted by 경제/부동산/프로그래머/안드로이드/PHP/mysql/asp 당양부부

// 죽이기로 결심한 httpd 프로세스 리스트를 한 번 나열해 봄

ps ax | grep httpd


// 해당 프로세스들의 PID만 모은다

ps ax | grep httpd | awk '{print $1}'


// PID 하나씩 KILL에 매개변수로 넘겨서 다 죽임

ps ax | grep httpd | awk '{print $1}' | xargs kill

Posted by 경제/부동산/프로그래머/안드로이드/PHP/mysql/asp 당양부부

Unix/Linux 디스크 용량 확인 (df/du)



디스크 용량을 확인하는 명령어들이다. 


df : 디스크의 남은 용량을 확인 

df -k : 킬로바이트 단위로 현재 남은 용량을 확인

df -m : 메가바이트 단위로 남은 용량을 왁인 

df -h : 보기 좋게 보여줌

df . : 현재 디렉토리가 포함된 파티션의 남은 용량을 확인






du : 현재 디렉토리에서 서브디렉토리까지의 사용량을 확인 

du -a : 현재 디렉토리의 사용량을 파일단위 출력

du -s : 총 사용량을 확인

du -h : 보기 좋게 바꿔줌 

du -sh * : 한단계 서브디렉토리 기준으로 보여준다. 


Posted by 경제/부동산/프로그래머/안드로이드/PHP/mysql/asp 당양부부

 -------------------------------------------------

   1. rsync 클라이언트쪽 작업

 -------------------------------------------------


 1) rsync가 설치되어 있는지 확인한다.


    rpm -qa | grep rsync


 2) rsync 가 설치되어있다면 /etc/xinet.d/밑에 rsync 있는지 확인한다.


 3) vi로 /etc/xinetd.d/rsync 를 열어서 disable = no  로 설정

     service rsync

    {

            disable = no

            flags           = IPv6

            socket_type     = stream

            wait            = no

            user            = root

            server          = /usr/bin/rsync

            server_args     = --daemon

            log_on_failure  += USERID

    }

 

 4) /etc 아래에 rsyncd.conf 파일을 열어서 편집한다.(없으면 새로 생성한다.) 

 

   # rsyncd.conf 파일 내용 예

   

   [html]

   path = /usr/local/apache/html_src

   comment = html

   uid = root

   gid = root

   use chroot = yes

   read only = no

   hosts allow = 2xx.xxx.xxx.xxx

   max clients = 2

   timeout 60

   

   [images]

   path = /usr/local/apache/images

   comment = images

   uid = root

   gid = root

   use chroot = yes

   read only = no

   hosts allow = 2x.xxx.xx.xxx

   max clients = 2

   timeout 60


 5) 편집후 xinetd를 다시 실행한다.

 

    service xinetd restart

  

 6) /var/log/message 에서 에러가 있는지 확인한다.

 

 7) iptables 방화벽 설정 추가

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -s 1xx.xx.xxx.xxx -j ACCEPT

 



 -------------------------------------------------

   2. rsync 서버쪽 작업

 -------------------------------------------------

 

 1) 스크립트 작성 - UpRsync.sh

    rsync -arz --delete /data/project1/upload/ 1xx.xx.xx.xx::upload

    rsync -arz --delete /data/project1/upload/ 1xx.xx.xx.xx::upload

Posted by 경제/부동산/프로그래머/안드로이드/PHP/mysql/asp 당양부부

OS : Cent OS 6.X


cd /etc/sysconfig


vi iptables 후 수정.


serivce iptables restart


Posted by 경제/부동산/프로그래머/안드로이드/PHP/mysql/asp 당양부부

Sar란?

시스템 관리 툴

 

설치방법

Sysstat을 다운로드(http://sebastien.godard.pagesperso-orange.fr/download.html) 받아 설치.

 

sar에서 확인할 수 있는 사항

- I/O 전송량 - 페이징- 프로세스 생성 숫자

- 블락 디바이스 활동

- 인터럽트 - 네트워크 통계

- run 큐 및 시스템 부하 평균

- 메모리와 스왑 공간 활용 통계

- 메모리 통계

- CPU 이용도

- 특정 프로세스에 대한 CPU 이용도

- inode, 파일, 기타 커널 테이블에 대한 상태

- 시스템 스위칭 활동(context switch)

- 스와핑 통계 - 특정 프로세스 통계

- 특정 프로세스의 자식 프로세스 통계

- TTY 디바이스 활동


사용옵션 정리

- sar명령어에 옵션을 주지 않고 수행했을 경우 -u옵션이 default로 적용된다.

- sar -A: 모든 관련정보를 출력한다.

- Shell> sar

%user : 사용자 레벨(application level) 에서 실행중일때의 CPU 사용률 (%) 

%nice : 사용자 레벨(appliaction level) 에서 nice 가중치를 준 CPU 사용률(%) 

%system : 시스템레벨(kernel) 에서 실행중일때의 CPU 사용률(%) 

%iowait : system이 I/O요청을 처리하지 못한 상태에서의 CPU의 idle 상태인 시간의 비율(%) 

%steal : virtual processer에 의한 작업이 진행되는 동안 virtual CPU에 의해 뜻하지 않는 대기시간이 생기는 시간의 비율(%) 

%idle : CPU가 쉬고있는 시간의 % 

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 13일        _x86_64_        (8 CPU)

 

10시 48분 03초     CPU     %user     %nice   %system   %iowait    %steal     %idle

10시 48분 04초     all      0.00      0.00      0.12      0.12      0.00     99.75

10시 48분 05초     all      0.00      0.00      0.00      0.00      0.00    100.00

 

- Shell> sar 5 2 → 5초 간격으로 2회 수행

- Shell> sar -b → 버퍼의 activity를 점검하여 I/O와 transfer의 통계를 출력한다.

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 13일        _x86_64_        (8 CPU)

 

10시 48분 52초       tps      rtps      wtps   bread/s   bwrtn/s

10시 48분 53초      0.00      0.00      0.00      0.00      0.00

10시 48분 54초      2.00      0.00      2.00      0.00     88.00

tps: 물리적 디스크에서 발생한 초당 전송량이며, 여기서의 전송은 물리적 디스크에 요청한 I/O이다.

rtps: 물리적 디스크로부터 발생된 초당 읽기의 총 요청 횟수

bread/s: 드라이브 안의 블럭에서 초당 읽은 데이터의 총합.

bwrth/s: 드라이브 안의 블록에서 초당 쓰여진 데이터의 총합

- Shell> sar -B → 페이징 통계를 출력

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 13일        _x86_64_        (8 CPU)

 

10시 55분 12초  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff

10시 55분 13초      0.00      0.00     33.66      0.00    101.98      0.00      0.00      0.00      0.00

10시 55분 14초      0.00     44.00     38.00      0.00    103.00      0.00      0.00      0.00      0.00

pgpgin/s: 디스크로부터 초당 paged in된 page의 총 수

papgout/s: 디스크에 초당 paged out 된 page의 총 수


 

- Shell> sar -w → 새롭게 만들어져 활동하고 있는 프로세스를 출력한다.

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 13일        _x86_64_        (8 CPU)

 

10시 59분 21초    proc/s   cswch/s

10시 59분 22초      0.00    840.00

10시 59분 23초      0.00    820.00

 

- Shell> sar -d

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 13일        _x86_64_        (8 CPU)

 

11시 01분 13초       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util

11시 01분 14초    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11시 01분 14초   dev8-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11시 01분 14초       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util

11시 01분 15초    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11시 01분 15초   dev8-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

 

- Shell> sar -i interval → 출력할 데이터의 간격(초단위) 

- Shell> sar -n DEV | EDEV | SOCK

* DEV: network device의 결과로부터의 통계

  IFACE: Network Interface 이름 

  rxpck/s: 초당 받은 패킷수 

  txpck/s: 초당 전송한 패킷수 

  rxbyt/s: 초당 받은 bytes 

  txbyt/s: 초당 전송한 bytes 

  rxcmp/s: 압축된 패킷을 초당 받은 수 

  txcmp/s: 압축된 패킷을 초당 전송한 수 

  rxmcst/s: 초당 받은 다중 패킷 수

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 13일        _x86_64_        (8 CPU)

 

11시 12분 27초     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s

11시 12분 28초        lo      2.00      2.00      0.10      0.10      0.00      0.00      0.00

11시 12분 28초      eth0     69.00      0.00      6.98      0.00      0.00      0.00      0.00

11시 12분 28초      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11시 12분 28초      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00


* EDEV: network device의 에러통계

  IFACE: Network Interface 이름 

  rxerr/s: 초당 불량 패킷을 받은 수 

  txerr/s: 패킷전송중 초당 발생한 에러 수 

  coll/s: 패킷전송중 초당 발생한 충돌 수 

  rxdrop/s: 리눅스 buffer 의 부족으로 패킷을 받는도중 초당 drop 된 패킷 수 

  txdrop/s: 리눅스 buffer 의 부족으로 전송중 초당 drop 된 패킷 수 

  txcarr/s: 패킷전송도중 초당 발생한 carrier-error 수 

  rxfram/s: 패킷을 받는도중 초당 발생한 frame alignment 에러 수 

  rxfifo/s: 패킷을 받는 도중 초당 발생한 FIFO overrun 에러 수 

  txfifo/s: 전송된 패킷중 초당 발생한 FIFO overrun 에러 수 

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 16일        _x86_64_        (8 CPU)

 

11시 40분 44초     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s

11시 40분 45초        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11시 40분 45초      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11시 40분 45초      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11시 40분 45초      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

 

* SOCK: socket의 통계

  totsck: 총 사용된 socket 수 

  tcpsck: 현재 사용중인 TCP sockets 수 

  udpsck: 현재 사용중이 UDP sockets 수 

  rawsck: 현재 사용중인 RAW sockets 수 

  ip-frag: 현재 사용중인 IP fragments 수

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 16일        _x86_64_        (8 CPU)

 

11시 41분 20초    totsck    tcpsck    udpsck    rawsck   ip-frag    tcp-tw

11시 41분 21초       553        26         6         0         0         0

11시 41분 22초       553        26         6         0         0         0

 

- Shell> sar -o filename → 수행한 결과를 binary형태로 filename에 기록한 이름으로 저장된다.

- Shell> sar -f filename → -o옵션을 이용하여 binary형태로 기록한 파일을 읽는 방법이다.

- Shell> sar -q → 실행 대기 중인 프로세스를 점검. 시스템의 load average를 나타낸다.

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 16일        _x86_64_        (8 CPU)

 

12시 08분 01초   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15

12시 08분 02초         0       940      0.00      0.00      0.00

12시 08분 03초         0       940      0.00      0.00      0.00

 

- Shell> sar -r → 가용메모리 점검 및 메모리 공간의 통계를 출력한다.

 kbmemfree : 사용가능한 총 메모리의 양(kbytes) 

 kbmemused : 사용중인 총 메모리의 양(kbytes), 커널에서 사용중인 메모리는 제외 

 %memused : 사용된 메모리의 % 

 kbbuffers : 커널에서 buffer 메모리로 총 사용된 메모리의 양 (kbytes) 

 kbcached : 커널에서 cache data 로 사용된 총 메모리의 양(kbytes) 

 kbcommit : 현재 작업을 위해 필요한 메모리의 총량(kbytes),메모리 부족이 발생하지 않기 위한 RAM/swap 사용량의 추정치  

 %commit : 현재 작업을 위해 필요한 메모리 총량의 %, kernel은 보통 메모리를 overcommits하므로 일반적으로 100%를 넘을 것이다.

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 16일        _x86_64_        (8 CPU)

 

12시 17분 50초 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit

12시 17분 51초     97632   7938036     98.79    223724   6253484   9696204     79.92

12시 17분 52초     97632   7938036     98.79    223724   6253484   9696204     79.92

 

- Shell> sar -R → 메모리 통계

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 16일        _x86_64_        (8 CPU)

 

14시 16분 33초   frmpg/s   bufpg/s   campg/s

14시 16분 34초      0.00      0.00      0.00

14시 16분 35초      0.00      0.00      0.00

frmpg/s : 시스템에서 초당 자유로워진 memory pages 의 양 페이지의 크기는 시스템 아키텍쳐에따라 달라지며 보통 4K / 8K 이다. 

bufpg/s : 시스템에서 초당 buffer 에 추가적으로 더해진 memory pages 의 양  

campg/s : 시스템에서 초당 system에 의해 cache된 memory pages 의 양


 

- Shell> sar -S → 스왑 점검 및 공간의 통계를 출력한다.

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 16일        _x86_64_        (8 CPU)

 

14시 56분 36초 kbswpfree kbswpused  %swpused  kbswpcad   %swpcad

14시 56분 37초   4096372       192      0.00         0      0.00

14시 56분 38초   4096372       192      0.00         0      0.00

kbswpfree : 사용가능한 스왑공간의 양(kbytes) 

kbswpused : 사용된 스왑공간의 양(kbytes) 

%swpused : 사용된 스왑공간의 % 

kbswpcad : cache된 스왑의 총량(kbytes) 

%swpcad : 사용중은 스왑의 총량 중 cache된 스왑공간의 %

 

- Shell> sar -v → 커널테이블 & 파일에서 inode의 상태를 출력한다.

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 16일        _x86_64_        (8 CPU)

 

16시 48분 36초 dentunusd   file-nr  inode-nr    pty-nr

16시 48분 37초    106773      4080    109732         6

16시 48분 38초    106773      4080    109732         6

dentunusd : Directory cache 에서 사용되고있지 않은 cache entries 

file-nr : file handles 의 수 

inode-nr : inode handles 의 수 

pty-nr : pty handles 의 수

 

   - Shell> sar -w → 작업 생성과 시스템 switching활동 현황 출력

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 16일        _x86_64_        (8 CPU)

 

17시 08분 36초    proc/s   cswch/s

17시 08분 37초      0.00   1032.00

17시 08분 38초      0.00   1066.00

proc/s : 초당 생성된 작업의 총 수 

cswch/s : 초당 context switching의 총 수

 

   - Shell> sar -W → swapping의 통계 출력

Linux 2.6.18-128.el5 (newTest2)         2010년 08월 16일        _x86_64_        (8 CPU)

 

17시 08분 58초  pswpin/s pswpout/s

17시 08분 59초      0.00      0.00

17시 09분 00초      0.00      0.00

pswpin/s : 초당 swap in 된 수 

pswpout/s : 초당 swap out 된 수


sar설정하기

- 아래의 내용과 같이 cron.d에 등록한다.

- Shell> cat /etc/cron.d/sysstat

# run system activity accounting tool every 10 minutes

*/10 * * * * root /usr/lib/sa/sa1 1 1

# generate a daily summary of process accounting at 23:53

53 23 * * * root /usr/lib/sa/sa2 -A

- sa1은 매 10분마다 시스템 모니터링한 결과를 /var/log/sa/saXX파일에 바이너리 형태로 기록한다. XX는 기록하는 날짜이다.

- sa2 -A는 23시 53분에 바이너리 파일을 읽어서 사람들이 볼 수 있도록 보고서를 만든다. /var/log/sa/sarXX 형태로 기록된다. sa1에서 5 3이라고 해놓으면 매 10분마다 실행을 하면서 5초동안 3번을 기록한다는 뜻이다.

- sar를 이용하여 각 결과 값을 위에 설명한 옵션을 이용하여 확인하면 된다.

 

kSar란?

GUI형태로 sar결과 값을 볼 수 있는 툴

 

설치방법

Sorurceforge에서 다운로드 받아 설치(http://sourceforge.net/projects/ksar/files/).


sar결과 값 추출 방법

- “위의 sar설정하기”에 따라 설정을 완료할 경우 매일 23시 53분에 ksar를 이용하여 내용을 볼수 있는 파일이 생성되나 특정 시간 동안에 작업을 진행하기 위해서는 아래와 같은 절차를 따르는 것이 필요하다.

1. /usr/local/lib/sa/sa1 1 360명령어를 이용하여 sa로그를 남김(예, sa23)

2. 남긴 sa23을 ksar에서 확인할 수 있는 text파일로 변경

3. 변경방법: shell>LC_ALL=C sar -A -f /var/log/sa/sa23 > ForKsar.txt

4. ForKsar.txt파일을 Ksar의 내부 창 Data에서 선택하여 아래의 UI환경에서 내용을 확인한다.



Posted by 경제/부동산/프로그래머/안드로이드/PHP/mysql/asp 당양부부

- 현재 디렉토리 내 확장자가 txt인 파일들을 중에서 "홍길동"이라는 문자열을 갖고 있는 파일의 한 줄과 이름을 보여준다.

find . -name "*.txt" | xargs grep 홍길동


- 이 때 검색어로 사용된 문자열은 색을 달리하여 표시하고 싶다면

find . -name "*.txt" | xargs grep --color=auto 홍길동

 - 검색어의 위치(줄번호)를 같이 표기하고 싶다면


find . -name "*.txt" | xargs grep -n 홍길동


- 대소문자를 구분하고 싶지 않다면

find . -name "*.txt" | xargs grep -i LgMobile

즉, LGMobile, LGMOBILE, lgMobile을 가리지 않고 찾는다.


- 현재 디렉토리 내 확장자가 txt인 파일들을 중에서 "홍길동"이라는 문자열을 갖고 있는 파일의 이름만 보고 싶다면

find . -name "*.txt" | xargs grep -l 홍길동


- 검색 결과에 다음과 같은 메시지가 포함된다면

grep: [특정경로]: No such file or directory


2>/dev/null 을 추가하면 해당 메시지를 표시하지 않고 찾은 결과만 볼 수 있다. 즉,

find . | xargs grep 2>/dev/null 홍길동


- 모든 옵션은 함께 사용 가능하다.

find . -name "*.txt" | xargs grep --color=auto -n 2>/dev/null 홍길동

Posted by 경제/부동산/프로그래머/안드로이드/PHP/mysql/asp 당양부부

리눅스 명령어중 해당 파일의 경로를 알려주는 명령어는 which 입니다. 


jdk 설치후 java의 경로를 알고 싶을때는 which 명령어를 사용하시면 됩니다.


ex) which java 

혹시 나오지 않는다면 find를 사용하시면 전체를 다 뒤져줍니다.



최상위 경로에서 

ex) find -name java

Posted by 경제/부동산/프로그래머/안드로이드/PHP/mysql/asp 당양부부

find ./* -name '*' -exec egrep -i "okcash" {} /dev/null \; > result_file.txt

Posted by 경제/부동산/프로그래머/안드로이드/PHP/mysql/asp 당양부부

getconf -a |grep glibc

GNU_LIBC_VERSION                   glibc 2.12

Posted by 경제/부동산/프로그래머/안드로이드/PHP/mysql/asp 당양부부
이전버튼 1 2 이전버튼

블로그 이미지
경제를 좋아하는 일산의 행복한 프로그래머입니다. 감사합니다.
당양부부
Yesterday21
Today7
Total116,403

달력

 « |  » 2018.12
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

최근에 달린 댓글

최근에 받은 트랙백

글 보관함