Domanda

Ho un processo defunta sul mio 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>

Come posso uccidere il processo di cui sopra, senza un riavvio della macchina? Ho provato con

kill -9 31756
sudo kill -9 31756
È stato utile?

Soluzione

Hai ucciso il processo, ma un processo morto non scompare dalla tabella dei processi fino al suo processo genitore esegue un compito chiamato "mietere" (essenzialmente chiamando wait(3) per quel processo di leggere il suo stato di uscita). processi di morti che non sono stati mietuto sono chiamati " zombie processi ".

L'ID processo padre che si vede per la 31756 è un processo id 1, che appartiene sempre alla init. Questo processo dovrebbe raccogliere i suoi processi zombie periodicamente, ma se non può, rimarranno zombie nella tabella dei processi fino al riavvio.

Altri suggerimenti

Hai controllato per un processo figlio che possono avere bisogno di essere ucciso per primo? A volte la marmellata su è giù la linea ... Prova ps -ef --forest

per vedere quello che potrebbe essere al di sotto di esso (se non altro) poi uccidere quel primo, poi quello che già si conosce

Se kill -9 non riesce ad uccidere un processo la causa è quasi sempre un driver o sistema operativo bug.

Il processo init ha adottato il processo, ma non può raccogliere esso. Vale a dire: quando init chiama wait (2) quel processo non viene restituito. Uno degli scopi principali di init è quello di raccogliere i bambini orfani morti, in modo che il problema non è che il suo genitore è morto prima che fosse raccolto. Pensate:? In caso contrario, che raccoglie i risultati di un processo nohup'd dopo il logout

Uccidere i bambini del processo defunta è improbabile che possa aiutare a meno che non siano in qualche modo legati alla particolare bug che state vedendo.

Si sta probabilmente non sarà in grado di uccidere se il genitore non risolverlo. Per una qualche ragione il sistema non sta raccogliendo quel processo zombie.

FWIW, ho visto un bel po 'sulle boxen SCO OpenServer che ho usato per amministrare. Pesante l'utilizzo multi-utente e le risorse di sistema basse, ma non sembrava male a nessuno. Solo mi ha infastidito. :)

Il processo si blocca probabilmente per esempio ignorando i segnali come SIGPIPE, verificare con strace -p <pid> ciò che sta accadendo qui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top