Eu não acho que o processo zumbi é uma grande dor de cabeça. Um processo zumbi não ocupa nenhum recurso. É só que tem sua entrada na tabela de processos.
Um processo de zumbis não é um processo órfão, ele tem um pai.
kill
, skill
pkill
não funcionará, pois o processo já foi encerrado, apenas que a entrada não foi removida.
O processo de zumbis pode ser eliminado enviando SIGCHLD
de sinal para o pai.
Eu acho que o número do sinal de SIGCHLD
é 17
ou 18
Se isso também falhar, talvez você queira matar o pai em si.
Da Wikipedia no sinal SIGCHLD:
Quando um processo filho termina antes o pai chamou wait, o kernel retém algumas informações sobre o processo para permitir que seu pai chame espere depois. Porque a criança é ainda consumindo recursos do sistema, mas não executá-lo é conhecido como um zumbi processo.
EDIT 1 : Os recursos do sistema consumidos são principalmente a entrada da tabela de processos. Se alguém souber se consome mais do que isso - memória ou ciclo de CPU, adicione uma explicação. AFAIK dificilmente ocupa recursos significativos do sistema.
Em computadores Unix e semelhantes a Unix sistemas operacionais, um processo zumbi ou processo defunto é um processo que tem execução concluída, mas ainda tem um entrada na tabela de processos. Esta entrada ainda é necessário para permitir o processo que começou o processo (agora zumbi) para ler seu status de saída.
Portanto, a entrada é mantida para que o processo pai possa saber o status de saída porque, no momento em que o filho sai, o pai provavelmente não está em um estado ou não está pronto para ler seu status de saída.
EDIT 3
Até a data em que nunca experimentei um processo de zumbi levando 100% da CPU. Vendo isso pela primeira vez.
Tente fazer um killall utorrent.exe
Eu posso ver que há duas instâncias de utorrent.exe
e uma delas é zumbi. Provavelmente o segundo (filho). killall deve matar o pai desde que o filho (zumbi) não pode ser morto.
EDIT 4
Parece que o killall não funcionou, pois estava dando sinal TERM em vez de KILL.
Experimente o killall --signal=KILL utorrent.exe
Se isso não funcionar, tente matar o processo seletivamente.
Obtenha a lista do processo PID do utorrent.exe
ps -e | grep -i utorrent
Você deve receber dois processos como
xxxx ? aa:bb:cc utorrent.exe defunct
yyyy ? aa:bb:cc utorrent.exe
Então o segundo é o pai. Mate-o usando
matar -9 yyyy
EDIT 5
Por favor, tente encontrar o Parent Id do processo por este comando bash
cat / proc / {defunctpid} / status | grep -i ppid
no seu caso é
cat / proc / 7298 / status | grep -i ppid
Se a saída vier como
PPid: 1
Então, infelizmente, acho que você está sem sorte. ID do processo 1
pertence ao init sem o qual seu sistema não pode executar