2014년 12월 18일 목요일

Python으로 좀비 프로세스 만들어보기

오후 4:40 Posted by jonnung No comments
원래는 좀비/고아 프로세스만 찾아서 kill 하는 것만 하려고 했으나, 조사를 좀 해보니까 좀비프로세스가 시스템 자원을 그렇게 대놓고 차지하는 것은 아니더라..
프로세스 제어블록을 차지하는 것이기 때문에 엄청나게 폭발적으로 생기는 좀비가 아니고서야 큰 영향은 없다고 싶었다. 

좀비 프로세스가 생기는 원인은 부모 프로세스가 자식 프로세스의 종료 코드를 받지 않고, 무한히 대기하는 상태이다. 한마디로 자식이 좀비가 되도 부모는 종료된 상황이 아닌 것이라는 말이지!
(고아 프로세스는 자식이 끝나지도 않았는데 부모가 끝나버려서 자식이 고아가 된 경우를 말함)

아무튼 확인을 해보기 위해서 좀비프로세스 발생시키는 스크립트를 하나 만들어 보았다.

subprocess 모듈의 Popen() 함수로 자식 프로세스를 하나 띄우고, 자식 프로세스가 끝나는걸 기다리지 않고 부모가 계속 무한루프를 돌도록 했다.

이 상태에서 "ps aux | grep ' Z' | grep -v grep" 를 실행해보면  상태값이 'Z'인 프로세스를 하나 발견할 수 있는데 이게 좀비 프로세스이다. 

부모를 죽이면 이 좀비프로세스도 사라진다. 

0 개의 댓글:

댓글 쓰기