좀비 프로세스
From IT Wiki
- 부모 프로세스가 종료 되었는데도 불구하고 종료되지 않고 계속 남아있는 프로세스
원인
- 부모 프로세스의 오류로 인하여 종료한 자식 프로세스의 종료가 적절히 이루어지지 않음
- 커널 오류에 의한 비정상적인 상태
좀비 프로세스 파악
- 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>
좀비 프로세스 죽이기
- 아래 명령어를 통해 일괄적으로 좀비 프로세스를 죽일 수 있다.
ps -ef | grep defunct | awk '{print $3}' | xargs kill -9