Impara Linux

Come uccidere i processi Zombie in Linux

Come uccidere i processi Zombie in Linux

Un processo zombie in Linux si riferisce a quei processi già morti ma, in un modo o nell'altro, sono ancora presenti nella tabella dei processi del sistema. La scappatoia è che, per qualche motivo, questo processo non è stato ripulito dal genitore dalla tabella dei processi. Di solito, questo accade dopo il completamento del processo di esecuzione.

Il solito modo di operare in Linux è che dopo che un processo ha completato la sua esecuzione, notifica il suo genitore, che è responsabile della rimozione del processo dalla tabella. Sfortunatamente, il genitore non è in grado di rimuovere il processo dalla memoria nei casi in cui il genitore non può leggere lo stato del bambino. Ecco come accade che abbiamo processi morti nella tabella dei processi. Questi sono quelli che chiamiamo i processi zombie.

Cosa causa i processi Linux Zombie Zombie?

Quando viene creato il processo figlio, un processo padre scritto male potrebbe non riuscire a chiamare la funzione wait(). Di conseguenza, i suoi figli zombi rimarranno nella memoria fino a quando non saranno estinti.

Ciò significa che nulla sta monitorando il processo infantile per i cambiamenti di stato e il segnale SIGCHLD verrà ignorato. Forse un'altra applicazione sta interferendo con l'esecuzione del processo padre, tramite una programmazione scadente o intenti dannosi.

La corretta manutenzione del sistema non si verificherà se il processo padre non sta osservando i cambiamenti di stato nel processo figlio.

Al termine del processo infantile, il PCB e la voce nella tabella dei processi non verranno rimossi. Lo stato di zombi non viene mai rimosso dal PCB a causa di ciò.

Gli zombi hanno un po' di memoria, ma di solito non è un problema. Poiché i sistemi Linux hanno un numero finito di PID (anche se un numero elevato), se un numero sufficiente di PID viene zombi, nessun altro processo può iniziare. È dubbio che questo accadrà.

Tuttavia, i processi zombie suggeriscono che qualcosa è andato storto con un'applicazione e che un programma specifico potrebbe avere un bug.
I bug del software nei data center non dovrebbero essere tollerati e devono essere affrontati.
Dovresti tenere d'occhio e distruggere i processi zombi fino a quando l'errore non viene risolto.

L'ID del processo non può essere riutilizzato finché non viene avviato, quindi la voce della tabella del processo è minuscola.
Poiché il PCB è molto più grande della voce della tabella di processo in un sistema operativo a 64 bit, è improbabile che ciò causi problemi.

La quantità di memoria disponibile per altri processi potrebbe essere influenzata da un gran numero di zombi. Tuttavia, se hai così tanti zombi, hai un grave problema con l'applicazione principale o un bug nel sistema operativo.

Quindi, cosa fai quando una procedura si trasforma in uno zombi?? Rintracci ed elimini i processi zombie.

Come trovare un processo zombie?

L'arresto iniziale per uccidere un processo zombi nel sistema è prima di identificarlo. Poiché il processo di inizializzazione ripulisce regolarmente gli zombi, tutto ciò che devi fare per sbarazzartene è distruggere il processo che li ha creati.

Il comando in alto è un modo rapido per vedere se ci sono zombi nella tua zona. Per ottenere ciò, eseguiremo il seguente comando.

superiore

risultati del comando superiore

Il numero di processi zombie in questo sistema verrà mostrato nell'output. Nel nostro caso sopra, abbiamo 0 zombi.
Usando il comando ps e inserendolo in egrep, possiamo ottenere un elenco di essi. La bandiera di stato per i processi zombi è "Z" e a volte vedrai anche "defunto".

tuts@fosslinux:~$ ps aux | egrep "Z|defunto"

La bandiera di stato per i processi zombie è Z o defunta de

Analizziamo le varie sezioni di questo comando.

Z nella colonna STAT dell'output identifica un processo zombie.
[defunto] nell'ultima colonna (COMANDO) dell'output identifica anche un processo zombie.

Idealmente, non è possibile uccidere un processo Zombie perché è morto. Informiamo invece il genitore di tentare di leggere lo stato del processo del figlio e infine di pulirlo dalla tabella di sistema. Per attivare questo processo, inviamo un segnale SIGCHLD al genitore del processo. L'identificazione dell'ID del processo padre o del cosiddetto PID implica l'esecuzione del seguente comando:

tuts@fosslinux:~$ ps -o ppid= 

Identificazione dell'ID del processo padre

Dopo aver ottenuto il PID dello zombi, usa il comando SIGCHLD segnala ai processi padre precedentemente identificati.

tuts@fosslinux:~$ kill -s SIGCHLD 

utilizzare il comando SIGCHLD segnale

In alcuni casi, questo non elimina il processo Zombie. Questo ci chiama a impegnarci nel piano b o c. Il precedente comporta il riavvio del processo padre o l'interruzione dei processi padre parent. D'altra parte, questi ultimi casi comportano un riavvio del sistema, specialmente quando il processo Zombie potrebbe causare un'interruzione o un'impennata enorme a causa del processo Zombie.

Di seguito è riportato il comando per terminare il processo padre.

tuts@fosslinux:~$ kill -9 

comando per uccidere il processo genitore

Nel caso in cui un processo genitore venga ucciso, per estensione, vengono uccisi anche tutti i processi figlio del dato genitore. Nel caso in cui uno dei processi figlio sia critico in un dato momento, potrebbe essere necessario posticipare l'uccisione fino a quando non è sicuro. D'altra parte, un rapido doppio controllo può dirti quanta memoria o potenza di elaborazione stanno consumando i processi Zombie. Questo aiuta a determinare se l'opzione miglioreèuccidere il processore padre per eseguire un riavvio del sistema nel ciclo successivo della manutenzione del sistema già programmata.

Su Linux, come funzionano gli stati dei processi??

Ovviamente Linux deve tenere traccia di tutte le applicazioni e i demoni in esecuzione sul tuo computer. Il mantenimento della tabella dei processi è uno dei modi in cui lo fa.
Questo è un elenco di strutture di memoria del kernel. Questo elenco include una voce per ogni processo che contiene alcune informazioni su di esso. Ciascuna delle strutture della tabella di processo contiene pochissime informazioni.

Memorizzano l'ID del processo, alcune altre informazioni e un puntatore al blocco di controllo del processo (PCB).

Il PCB è il luogo in cui Linux memorizza tutte le informazioni di cui ha bisogno per cercare o impostare per ogni processo. Quando un processo viene creato, viene modificato, dato il tempo di elaborazione e quindi distrutto.

Ci sono oltre 95 campi sul PCB Linux. È definito nella struttura delle attività, che è lunga oltre 700 righe. Sul PCB è possibile trovare i seguenti tipi di informazioni:

Gli stati del processo sono illustrati di seguito

Uno dei seguenti può essere lo "Stato del processo":

Conclusione

A meno che non facciano parte di una vasta orda, gli zombi non sono così dannosi. Alcuni non sono un grosso problema e un rapido riavvio li cancellerà. Tuttavia, c'è un punto da considerare.

Le architetture Linux hanno un numero massimo di processi e, di conseguenza, un numero massimo di numeri ID di processo. Quando viene raggiunto il numero massimo di processi zombie di un computer, non è possibile avviare nuovi processi.

I processi zombie non sono processi; sono i resti di processi morti che il loro processo padre non ha ripulito correttamente. Tuttavia, se noti che una particolare applicazione o processo genera costantemente zombi, dovresti indagare ulteriormente.

Molto probabilmente, è solo un programma scritto male; in tal caso, forse c'è una versione aggiornata che si pulisce dopo che il suo figlio si è elaborato correttamente.

Rimappa i pulsanti del mouse in modo diverso per software diversi con X-Mouse Button Control
Forse hai bisogno di uno strumento che possa cambiare il controllo del tuo mouse con ogni applicazione che utilizzi. In questo caso, puoi provare un'a...
Recensione del mouse wireless Microsoft Sculpt Touch
Ho letto di recente del Microsoft Scolpisci il tocco mouse wireless e ho deciso di acquistarlo. Dopo averlo usato per un po', ho deciso di condividere...
Trackpad e puntatore del mouse su schermo AppyMouse per tablet Windows
Gli utenti di tablet spesso mancano il puntatore del mouse, soprattutto quando sono abituati a usare i laptop laptop. Gli smartphone e i tablet touchs...