안 죽는 좀비 프로세스 죽이기

1 개요[ | ]

안 죽는 좀비 프로세스 죽이기
  • 안 죽는 좀비 프로세스를 죽인다는 말에는 어폐가 있다. 이미 죽었는데 껍데기(?)가 남아 있는 것뿐이기 때문이다. 어쨌든 제거해보자.

2 kill 안됨[ | ]

[root@zetawiki ~]# ps -ef | grep defunct | grep -v grep
testuser 10668 10667  0 Apr04 ?        00:00:00 [myscript.sh] <defunct>
→ 10668 프로세스가 좀비 상태임.
[root@zetawiki ~]# kill -9 10668
[root@zetawiki ~]# ps -ef | grep defunct | grep -v grep
testuser 10668 10667  0 Apr04 ?        00:00:00 [myscript.sh] <defunct>
→ 죽여도 안 죽음. 좀비.

3 부모 프로세스 확인 후 조치[ | ]

[root@zetawiki ~]# ps -ef | grep 10667 | grep -v grep
testuser 10667 21229  0 Apr04 ?        00:00:00 crond
testuser 10668 10667  0 Apr04 ?        00:00:00 [myscript.sh] <defunct>
testuser 10689 10667  0 Apr04 ?        00:00:00 /usr/sbin/sendmail -FCronDaemon
→ 부모 프로세스는 crond (10667)
[root@zetawiki ~]# ps -ef | grep 21229 | grep -v grep
testuser 10667 21229  0 Apr04 ?        00:00:00 crond
root     21229     1  0 Feb27 ?        00:00:02 crond
→ 조부모 프로세스는 root의 crond (21229)

조부모 프로세스(21229)는 그냥 두고 부모 프로세스(10667)만 죽이면 된다..

[root@zetawiki ~]# kill -9 10667
[root@zetawiki ~]# ps -ef | grep defunct | grep -v grep
→ 좀비 제거 완료.[1]

여기까지만 해도 되지만 뭔가 찜찜하니 crond 재시작

[root@zetawiki ~]# service crond restart
Stopping crond:                                            [  OK  ]
Starting crond:                                            [  OK  ]

4 같이 보기[ | ]

5 참고[ | ]

  1. kill 시킨 testuser crond는 구동할 필요가 없다. 각 계정 crond 프로세스는 root crond가 예약된 작업을 수행할 동안만 있는 것이다.
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}