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?


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.


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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.