Pergunta

Eu tenho um processo extinto no meu sistema:

abc      22093 19508  0 23:29 pts/4    00:00:00 grep ProcA
abc      31756     1  0 Dec08 ?        00:00:00 [ProcA_my_collect] <defunct>

Como posso matar o processo acima, sem uma reinicialização da máquina? Eu tentei com

kill -9 31756
sudo kill -9 31756
Foi útil?

Solução

Você matou o processo, mas um processo mortos não desaparece da tabela de processo até que seus executa processo pai uma tarefa chamada "colher" (essencialmente chamando wait(3) para esse processo de ler seu estado de saída). processos de mortos que não foram colhidos são chamados de " zumbi processos ."

O ID do processo pai você ver por 31756 é ID de processo 1, que pertence sempre init. Esse processo deve colher seus processos zombie periodicamente, mas se não puder, eles permanecerão zumbis na tabela de processos até que reinicie.

Outras dicas

Você verificar se há um processo filho que pode precisar de ser morto em primeiro lugar? Às vezes, o atolamento para cima é para baixo da linha ... Tente ps -ef --forest

para ver o que pode ser abaixo dele (se alguma coisa), em seguida, matar o primeiro, então o que você já sabe sobre

Se kill -9 não consegue matar um processo a causa é quase sempre um driver ou sistema operacional bug.

O processo init adotou o processo, mas não podem colher-lo. Ou seja: quando o init chama wait (2) que o processo não é devolvido. Uma das principais finalidades do init é para colher crianças órfãs mortos, de modo que o problema não é que seu pai morreu antes de ser colhida. Pense:? Caso contrário, quem colhe os resultados de um processo nohup'd após o logout

Matar crianças do processo de defunto é improvável que ajuda a menos que estejam de alguma forma relacionado com o bug específico que você está vendo.

Você provavelmente não vai ser capaz de se matar o pai não resolvê-lo. Por alguma razão os sistemas não está a recolher esse processo zumbi.

FWIW, eu vi um pouco sobre o SCO OpenServer boxen que eu usei para administrar. uso multi-usuário pesado e baixo recursos do sistema, mas não parecia doer nada. Apenas me incomodou. :)

O processo provavelmente trava no exemplo ignorando sinais como SIGPIPE, cheque com strace -p <pid> que está acontecendo aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top