Como matar processos que não respondem a -9

9

Estou vendo processos no meu SGI Altix 450 executando o SLES 10.1 aparentemente parando de funcionar (ou seja, não fornecendo saída adicional em seus logs por horas). Neste ponto, quero interromper o processo incorreto para poder reiniciá-lo. A parte superior mostra que o processo está no estado (R). Embora quando eu tento matá-lo, nada acontece. Mesmo quando eu uso o kill -9, ele ainda permanece. Nesse caso, o que posso fazer além de reiniciar a máquina?

Jared Brown
fonte
2
Eles são definitivamente o mesmo ID de processo? Não é que você esteja matando o processo e algum daemon esteja reiniciando um processo com o mesmo nome?
CK.

Respostas:

9

É possível que o processo seja interrompido, mas aguardando que o pai colete seu valor de retorno. Nesse caso, após ser morto, ele estaria no estado 'Z' e não em 'R'. Nesse caso, você deve encontrar o ppidprocesso usando o pscomando e matar o processo pai também (se tiver certeza de que ele não causará problemas).

O outro caso pode ser que, por algum motivo, o processo seja reiniciado após ser morto como tty. Nesse caso, a identificação do processo deve mudar toda vez que você mata -9. Veja se o ID do processo está mudando toda vez que você tenta matá-lo.

Saurabh Barjatiya
fonte
Acredito que estou tentando matar o processo pai. É o processo pai que está no estado (R). pstree confirma isso. Os processos filhos estão todos em (Z) estados zumbis. O ppid permanece estático, portanto, não acredito que esteja simplesmente reiniciando.
21411 Jared Brown
Se você interromper o processo pai (e o processo pai e assim por diante), o init se tornará pai dos processos filhos que estão no estado 'Z' e coletam seu valor de retorno. Portanto, a melhor maneira de remover filhos 'Z' cujo pai não está recebendo seu valor de retorno é matar o pai também, para que o init se torne pai de processos filhos mortos.
Saurabh Barjatiya
Este é o problema que estou tendo. O envio de um sinal -9 via kill para o processo pai não o está encerrando.
21411 Jared Brown
1
Enviar SIGHUP para o pai às vezes é suficiente. Você nem sempre tem que matar os pais.
Thomas
2
Sinto muito, SIGCHLD. (muito cedo pela manhã) #
Thomas
2

O processo está aguardando algum recurso do sistema, talvez o NFS? isso não está permitindo que 'deixe ir'. Gostaria de ouvir algumas soluções para isso além do meu ...

reinicie a caixa ou deixe o processo parado.

Gostaria de saber se você pode 'PARAR' o processo via kill -STOP {PID} para impedir que ele consuma mais CPU.

A reinicialização deve ser possível mesmo com outro processo parado, mas pode exigir uma porta de lista ou segmento de memória compartilhada que ainda esteja em uso pelo outro processo.

ericslaw
fonte
1
Um processo que estava aguardando a conclusão do NFS ou de alguma função de E / S não estava no estado (D)? Esses processos estão em um estado (R).
21411 Jared Brown
É exatamente o que está acontecendo comigo algumas vezes quando eu faço o lscomando em uma montagem s3fs. O lsprocesso não vai acabar, kill -9até eu forçar a desmontagem comumount -l
Marco Marsala
0

Você já conferiu o dmesg? Eu vi isso depois de um pânico no kernel; a única maneira de recuperar é reiniciar (de preferência em breve) - e obter um kernel corrigido.

Os processos não-capacitáveis ​​normais estarão no estado D, não R.

derobert
fonte
Qualquer coisa pode ser feita sobre processos difíceis de morrer do estado D que não sejam a reinicialização? ppid = 1
Prof. Moriarty