[Linux] 좀비 프로세스 defunct 죽이기 좀비 프로세스란

Defunct 프로세스란?

부모 프로세스가 자식 프로세스를 만들게 되고 프로세스가 끝나게 될 때, 부모 프로세스는 자식 프로세스 실행이 끝난 후 커널은 이 사실을 시그널 18의 형태로 부모에게 전송합니다. 하지만 부모 프로세스가 어떤 작업을 하고 있다면 자식 프로세스의 시그널을 받지 못합니다. 이때는 자식 프로세스가 정상적으로 종료될 수 없게 되는데 이 상태가 defunct 상태입니다.

 

쉽게 말해서 부모 프로세스가 없는 자식 프로세스들입니다.

좀비(defunct) 프로세스 찾기

# ps -ef | grep defunct | grep -v grep

 

실행예시

# ps -ef | grep defunct | grep -v grep
root 17107 21899 0 Feb25 ? 00:00:00 [프로세스] <defunct> testuser 21207 21205 0 Feb26 ? 00:00:00 [프로그램] <defunct>

 

좀비 프로세스 모두 죽이기

좀비 프로세스는 kill -18을 하여 프로세스를 없애 버릴 수 있습니다.
부모 프로세스의 PID가 1이 아니라면 부모 프로세스 자체를 kill 하여 init 프로세스에게 zombie 프로세스를 clean up 시키도록 할 수 있습니다.

명령어
# ps -ef | grep defunct | awk '{print $3}' | xargs kill -9

 

좀비 프로세스 수 확인

명령어
# top -b -n 1 | grep zombie
# ps -ef | grep defunct | grep -v grep | wc -l

 

실행예시
# top -b -n 1 | grep

zombie Tasks: 139 total, 1 running, 136 sleeping, 0 stopped, 2 zombie

댓글

Designed by JB FACTORY