[Linux] 좀비 프로세스 defunct 죽이기 좀비 프로세스란
- IT/리눅스(Linux)
- 2022. 5. 4.
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