좀비 프로세스란 무엇입니까?
종료된 프로세스이지만 프로세스 설명자가 메모리에 남아 있기 때문에 전부가 메모리에서 즉시 제거되지는 않습니다.
프로세스의 정상적인 동작은 무엇입니까?
프로세스가 종료되면 프로세스의 상태는 다음과 같습니다.
EXIT_ZOMBIE
프로세스의 부모는 자식 프로세스가 종료되었음을 알립니다.
SIGCHLD
신호.
그런 다음 부모 프로세스는
wait()
시스템 호출이 작동하지 않는 프로세스의 종료 상태 및 기타 정보를 읽는 데 사용됩니다. 이후
wait()
가 호출되면 좀비 프로세스가 메모리에서 제거됩니다. 이 작업은 빠르게 수행되므로 시스템에 좀비 프로세스가 누적되는 것을 볼 수 없습니다. 그러나 여러 좀비 프로세스가 누적되는 경우 프로그램 코드가 효율적이지 않은 상황입니다.
좀비 프로세스를 찾는 방법 :
다음 명령 실행
top
다음 명령 실행
ps -ef | grep defunct
누적되는 좀비 프로세스를 종료하는 방법:
대부분의 경우 좀비 프로세스는 동일한 상위 프로세스 ID를 갖습니다.
프로세스를 제거하는 방법에는 두 가지가 있습니다.
- 를 보냅니다.
SIGCHLD
부모 프로세스에 신호를 보냅니다.
이 신호는 상위 프로세스에 wait()
시스템 호출 및 좀비 자식 정리:
kill -s SIGCHLD <PPID>
예:
kill -s SIGCHLD 2201
kill -9 <PPID>
예:
kill -9 2201