포 그라운드에서 프로그램을 시작한 후 (데몬 프로그램)으로 프로그램을 종료 kill -9
했지만 좀비가 남아서으로 프로그램을 종료 할 수 없습니다 kill -9
. 좀비 프로세스를 죽이는 방법?
좀비가 죽은 프로세스 (이미 종료) 인 경우 ps aux
? 의 출력에서 제거하는 방법은 무엇입니까?
root@OpenWrt:~# anyprogramd &
root@OpenWrt:~# ps aux | grep anyprogram
1163 root 2552 S anyprogramd
1167 root 2552 S anyprogramd
1169 root 2552 S anyprogramd
1170 root 2552 S anyprogramd
10101 root 944 S grep anyprogram
root@OpenWrt:~# pidof anyprogramd
1170 1169 1167 1163
root@OpenWrt:~# kill -9 1170 1169 1167 1163
root@OpenWrt:~# ps aux |grep anyprogram
1163 root 0 Z [anyprogramd]
root@OpenWrt:~# kill -9 1163
root@OpenWrt:~# ps aux |grep anyprogram
1163 root 0 Z [anyprogramd]
답변
좀비는 이미 죽었으므로 죽일 수 없습니다. 좀비를 청소하려면 부모가 기다려야하므로 부모를 죽이면 좀비를 제거해야합니다. (부모가 죽은 후에는 좀비가 pid 1에 의해 상속되어 대기하고 프로세스 테이블에서 해당 항목을 지 웁니다.) 데몬이 좀비가되는 자식을 생성하는 경우 버그가 있습니다. 데몬은 자식이 언제 죽었는지 알면서 wait
종료 상태를 확인해야합니다.
좀비의 부모 인 모든 프로세스에 신호를 보내는 방법의 예 (이것은 매우 조잡하고 의도하지 않은 프로세스를 죽일 수 있습니다. 이런 종류의 썰매 망치를 사용하지 않는 것이 좋습니다) :
# Don't do this. Incredibly risky sledge hammer!
kill $(ps -A -ostat,ppid | awk '/[zZ]/ && !a[$2]++ {print $2}')
답변
다음 명령으로 상위 프로세스를 종료하여 좀비 프로세스를 정리할 수 있습니다.
kill -HUP $(ps -A -ostat,ppid | grep -e '[zZ]'| awk '{ print $2 }')
답변
나는 시도했다 :
ps aux | grep -w Z # returns the zombies pid
ps o ppid {returned pid from previous command} # returns the parent
kill -1 {the parent id from previous command}
이것은 작동합니다 🙂
답변
http://www.linuxquestions.org/questions/suse-novell-60/howto-kill-defunct-processes-574612/ 에서 찾았습니다 .
2) 다른 사용자의 유용한 팁 (Thxs Bill Dandreta) : 때때로
kill -9 <pid>
프로세스를 종료하지 않습니다. 운영
ps -xal
네 번째 필드는 부모 프로세스이며, 좀비의 부모와 좀비 모두를 죽입니다!
예
4 0 18581 31706 17 0 2664 1236 wait S ? 0:00 sh -c /usr/bin/gcc -fomit-frame-pointer -O -mfpmat
4 0 18582 18581 17 0 2064 828 wait S ? 0:00 /usr/i686-pc-linux-gnu/gcc-bin/3.3.6/gcc -fomit-fr
4 0 18583 18582 21 0 6684 3100 - R ? 0:00 /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/cc1 -quie
18581
, 18582
, 18583
좀비는 –
kill -9 18581 18582 18583
효과가 없습니다.
kill -9 31706
좀비를 제거합니다.
답변
나는 시도했다
kill -9 $(ps -A -ostat,ppid | grep -e '[zZ]'| awk '{ print $2 }')
그리고 그것은 나를 위해 작동합니다.