Como matar um processo que não morre?

1

Algo deu errado com meu demônio "setroubleshootd" em um servidor de produção. está tomando muito cpu e não vai morrer, não importa o quê!

o que eu tentei

sudo killall -9 setroubleshootd
sudo killall -9 <<pid>>
    
por teslasimus 16.03.2013 / 10:41

2 respostas

3

A melhor solução, infelizmente, é reinicializar. Está preso no kernel.

Você pode tentar desassociá-lo. Mas isso é inerentemente arriscado. Isso pode causar a falha do kernel. Uma reinicialização ordenada é muito mais segura.

Basicamente, a forma como você desmembra é descobrir o que está fazendo (usando ferramentas como ls /proc/<pid>/fd , top , e assim por diante) e fazer algo acontecer para mudar o que estiver preso. Se estiver preso em um processo, tente matar esse processo. Se estiver preso em um arquivo, tente remover esse arquivo. Isso funciona muito raramente, mas mesmo que isso aconteça, eu consideraria o sistema poluído e o reiniciaria de qualquer maneira.

Mexer com ele pode fazer com que mais processos fiquem "atrasados".

    
por 16.03.2013 / 10:53
2

Não é a resposta que você quer, mas se o processo não morrer, provavelmente você está sem sorte - você provavelmente precisará reinicializar. (Noto que o comando para matar um PID é matar -9 > em vez disso, killall.

Eu suspeito que pode haver um subconjunto muito pequeno de eventos que você pode usar usando a chave Mafic_SysRQ se ela estiver ativada (como o NFS monta) - mas eu não joguei tanto assim e é para desenvolvedores - e, Eu suspeito, geralmente não habilitado por padrão. Mais informações aqui.

    
por 16.03.2013 / 10:59

Tags