Se sei un normale utente Linux, devi aver incontrato il termine "Processi Zombie '. Quindi quali sono i processi zombi? Come vengono creati? Sono dannosi per il sistema? Come uccido questi processi? Continua a leggere per trovare le risposte a tutte queste domande.
Cosa sono i processi zombi?
Quindi sappiamo tutti come funzionano i processi. Lanciamo un programma, iniziamo il nostro compito e una volta terminato il nostro compito, terminiamo quel processo. Una volta terminato il processo, deve essere rimosso dalla tabella dei processi.
Puoi vedere i processi in corso nel "Monitoraggio di sistema".
Sostituisci il pid con l'id del processo padre in modo che il processo padre rimuova tutti i processi figlio che sono morti e completati. Immaginalo in questo modo:"Trovi un cadavere in mezzo alla strada, chiami la famiglia del cadavere e loro portano via quel cadavere dalla strada". Ma molti programmi non sono programmati abbastanza bene per rimuovere questi zombi bambini perché se lo fossero, non avresti quegli zombi in primo luogo. Quindi l'unica cosa garantita per rimuovere Child Zombies è uccidere il genitore.
Tuttavia, a volte alcuni di questi processi rimangono nella tabella dei processi anche dopo aver completato l'esecuzione.
Tuttavia, a volte alcuni di questi processi rimangono nella tabella dei processi anche dopo aver completato l'esecuzione.
Quindi questi processi che hanno completato la loro vita di esecuzione ma esistono ancora nella tabella dei processi sono chiamati "Processi Zombie".
E come vengono creati esattamente?
Ogni volta che eseguiamo un programma, crea un processo padre e molti processi figlio. Tutti questi processi figlio utilizzano risorse come memoria e CPU allocate loro dal kernel.
Una volta che questi processi figlio hanno terminato l'esecuzione, inviano una chiamata di uscita e muoiono. Questa chiamata Exit deve essere letta dal processo padre che in seguito chiama il comando wait per leggere l'exit_status del processo figlio in modo che il processo figlio possa essere rimosso dalla tabella dei processi. Se il padre legge la chiamata Exit inviata correttamente dal processo figlio, il processo viene rimosso dalla tabella dei processi.
Tuttavia, se il genitore non riesce a leggere la chiamata di uscita dal processo figlio, il processo figlio che ha già terminato l'esecuzione e che ora è morto non verrà rimosso dalla tabella dei processi.
I processi Zombie sono dannosi per il sistema?
No. Poiché il processo zombi non sta eseguendo alcun lavoro, non utilizza alcuna risorsa o influisce su qualsiasi altro processo, non c'è nulla di male nell'avere un processo zombi. Ma poiché l'exit_status e altre informazioni sul processo dalla tabella dei processi sono archiviate nella RAM, avere troppi processi Zombie a volte può essere un problema. Immagina così :
“Sei il proprietario di un'impresa edile. Paghi la paga giornaliera a tutti i tuoi dipendenti a seconda di come lavorano. Un operaio viene ogni giorno in cantiere, si siede e basta, non devi pagarlo, non fa nessun lavoro. Viene solo ogni giorno e si siede, tutto qui!
Un tale lavoratore è un esempio vivente di un processo zombi. Ma, se hai molti lavoratori zombi, il tuo cantiere sarà affollato e potrebbe diventare difficile per le persone che stanno effettivamente lavorando.
Allora, come trovare i processi zombi?
Avvia un terminale e digita il seguente comando – ps aux | grep Z Ora otterrai i dettagli di tutti i processi zombie nella tabella dei processi.
Come uccidere i processi Zombie?
Normalmente uccidiamo i processi con il comando SIGKILL ma i processi zombi sono già morti. Non puoi uccidere qualcosa che è già morto. Quindi quello che devi fare è digitare questo comando – kill -s SIGCHLD pid Sostituisci il pid con l'id del processo genitore in modo che il processo genitore rimuoverà tutti i processi figlio che sono morti e completati. Immagina così :
"Trovi un cadavere in mezzo alla strada, chiami la famiglia del cadavere e loro lo portano via dalla strada."
Ma molti programmi non sono programmati abbastanza bene per rimuovere questi zombi bambini perché se lo fossero, non avresti quegli zombi in primo luogo. Quindi l'unica cosa garantita per rimuovere Child Zombies è uccidere il genitore.