Lancei meu programa em primeiro plano (um programa daemon) e o matei com ele kill -9
, mas tenho um zumbi restante e não consigo matá-lo kill -9
. Como matar um processo de zumbi?
Se o zumbi é um processo morto (já morto), como eu o removo da saída de 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]
ps -o ppid 1163
diz? Ou seja, quem é o pai de 1163? Esse é o processo que deve ser encerrado.Respostas:
Um zumbi já está morto, então você não pode matá-lo. Para limpar um zumbi, ele deve ser aguardado pelos pais, de modo que matá-los deve trabalhar para eliminar o zumbi. (Depois que o pai morre, o zumbi será herdado pelo pid 1, que o aguardará e limpará sua entrada na tabela de processos.) Se o seu daemon gerar filhos que se tornam zumbis, você terá um bug. Seu daemon deve observar quando seus filhos morrem e
wait
sobre eles para determinar seu status de saída.Um exemplo de como você pode enviar um sinal para cada processo que é o pai de um zumbi (observe que isso é extremamente bruto e pode matar processos que você não pretende. Não recomendo usar esse tipo de marreta):
fonte
ps aux
?kill $(ps -A -ostat,ppid | awk '/[zZ]/{print $2}' | sort -u)
PPid
fila se vocêcat /proc/<pid>/status
Você pode limpar um processo zumbi matando o processo pai com o seguinte comando:
fonte
grep
não é necessário.ps ... | awk '/[zZ]/{print $2}'
Eu tentei:
isso vai funcionar :)
fonte
Encontrei-o em http://www.linuxquestions.org/questions/suse-novell-60/howto-kill-defunct-processes-574612/
2) Aqui está uma ótima dica de outro usuário (Thxs Bill Dandreta): Às vezes
não matará um processo. Corre
o quarto campo é o processo pai, mata todos os pais de um zumbi e o zumbi morre!
Exemplo
18581
,18582
,18583
São zumbis -não tem efeito.
remove os zumbis.
fonte
init
por mim, e agora eu não posso fazer qualquer coisa e sou forçado a reiniciar ... o processo zumbi é Java, tendo 3.4GB de 4GB de RAMeu tentei
E funciona para mim.
fonte