좀비 프로세스

From CS Wiki
부모 프로세스가 종료 되었는데도 불구하고 종료되지 않고 계속 남아있는 프로세스

원인[edit | edit source]

  • 부모 프로세스의 오류로 인하여 종료한 자식 프로세스의 종료가 적절히 이루어지지 않음
  • 커널 오류에 의한 비정상적인 상태

좀비 프로세스 파악[edit | edit source]

  • top 명령어를 통해 좀비 프로세스의 수, 좀비 프로세스를 확인할 수 있다.
  • 개수: 두번째줄 마지막에 1 zombie를 통해 개수 확인
  • 프로세스: 프로세스 목록 중 두번째 S(Status)가 Z로 표시된 프로세스 확인
[root@itwiki ~]# top
top - 22:01:31 up 97 days, 17:08,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 118 total,   3 running, 114 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1048576k total,   990160k used,    58416k free,   180060k buffers
Swap:  2031608k total,    48520k used,  1983088k free,   203936k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      15   0 10368  544  512 S  0.0  0.1   0:00.12 init
    2 root      RT  -5     0    0    0 Z  0.0  0.0   0:03.16 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    4 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0
  • 아래와 같은 명령어를 통해 간단히 개수만 확인할 수도 있다.
[root@itwiki ~]# top -b -n 1 | grep zombie
Tasks: 139 total,   1 running, 136 sleeping,   0 stopped,   2 zombie
  • ps와 grep명령어를 통해 프로세스를 특정해서 조회할 수 있다.
[root@itwiki ~]# ps -ef | grep defunct | grep -v grep
root     17107 21899  0 Feb25 ?        00:00:00 [myagent] <defunct>
testuser 21207 21205  0 Feb26 ?        00:00:00 [check_service.sh] <defunct>

좀비 프로세스 죽이기[edit | edit source]

  • 아래 명령어를 통해 일괄적으로 좀비 프로세스를 죽일 수 있다.
ps -ef | grep defunct | awk '{print $3}' | xargs kill -9