e perché non viene ucciso?'/> e perché non viene ucciso?'/> e perché non viene ucciso?'/> Cos'è un processo <defunct> e perché non viene ucciso? | aaartweb.com

Domanda Cos'è un processo e perché non viene ucciso?


Il browser Chrome non era reattivo e ho cercato di ucciderlo, ma invece di scomparire il processo <defunct> alla sua destra, e non è stato ucciso:

enter image description here

Cosa è <defunct> per un processo e perché non viene ucciso?


134
2017-10-15 11:27


origine


La risposta accettata menziona che "kill -9 PID non funziona ".E 'parzialmente vero: in realtà, NO kill funzionerà.Inoltre, -9 dovrebbe essere usato come ultima risorsa.Il 99% delle volte un kill predefinito del processo padre lo ucciderà E raccoglierà tutti i bambini Un "default kill" è un SIGTERM (-15). Incoraggio i fan del -9 (SIGKILL) a leggere stackoverflow.com/questions/690415/... - Mike S
stackoverflow.com/questions/356722/... - Aᴍɪʀ


risposte:


Dal tuo output vediamo un "defunto", il che significa che il processo ha completato il suo compito o è stato danneggiato o ucciso, ma i suoi processi figli sono ancora in esecuzione o il processo padre sta monitorando il suo processo figlio. Per uccidere questo tipo di processo, kill -9 PID non funziona. Puoi provare ad ucciderli con questo comando ma lo mostrerà ancora e ancora.

Determina qual è il processo genitore di questo processo defunto e uccidilo. Per sapere questo eseguire il comando:

ps -ef | grep defunct

UID          PID     PPID       C    STIME      TTY          TIME              CMD
1000       637      27872      0   Oct12      ?        00:00:04 [chrome] <defunct>
1000      1808      1777       0    Oct04     ?        00:00:00 [zeitgeist-datah] <defunct>

Poi kill -9 637 27872, quindi verificare che il processo defunto sia passato ps -ef | grep defunct.


124
2017-10-15 11:47



non puoi uccidere il processo "defunto". Puoi solo accelerare la cancellazione della sua entrata in una tabella di processo uccidendo il suo genitore. - jfs
Cosa succede se il ppid è 1 (init)? Supponiamo che dovrò aspettare? - Luc
per automatizzare l'uccisione, puoi farlo anche tu (potrebbe essere necessario cambiare i byte che stai tagliando dall'output): ps -ef | grep defunct | grep -v grep | cut -b8-20 | xargs kill -9 - warren
@warren Grazie. Puoi anche renderlo leggermente più corto e (imo) più semplice non facendo un secondo grep. Basta cambiare il primo grep in grep [d]efunct o simile e non corrisponderà a se stesso. - Thor84no
@warren non puoi uccidere un processo defunto, neanche con un SIGKILL. Inoltre, stai usando kill -9 piuttosto indiscriminatamente. Vedere stackoverflow.com/questions/690415/.... Se vuoi uccidere bambini defunti, potresti provare: parents_of_dead_kids=$(ps -ef | grep [d]efunct | awk '{print $3}' | sort | uniq | egrep -v '^1$'); echo "$parents_of_dead_kids" | xargs kill. Rieseguire lo script dopo circa 30 secondi, con kill -9 se lo desideri (Nota che non autorizzo specificamente l'uccisione di Init) - Mike S


La pagina di manuale ps (1) dice:

Processi contrassegnati <defunct> sono processi morti (i cosiddetti "zombie")   che rimangono perché il loro genitore non li ha distrutti correttamente.   Questi processi saranno distrutti da init(8) se il processo genitore   uscite.

Non puoi ucciderlo perché è già morto. L'unica cosa rimasta è una voce nella tabella di processo:

Sui sistemi operativi per computer Unix e Unix, un processo di zombi o   il processo defunto è un processo che ha completato l'esecuzione ma ancora   ha una voce nella tabella di processo. Questa voce è ancora necessaria per consentire   il processo genitore per leggere lo stato di uscita del suo bambino.

Non c'è nulla di male nel lasciare che tali processi siano meno che non ce ne siano molti. Zombie viene infine raccolto dai suoi genitori (chiamando wait(2)). Se il genitore originale non lo ha raccolto prima della sua uscita, allora init processi (pid == 1) lo fa in un secondo momento. Processo Zombi è solo:

Un processo che è terminato e che viene cancellato quando è in uscita   è stato segnalato a un altro processo che è in attesa di tale processo   terminare.


44
2018-02-27 20:53