GNU/Linux >> Linux Esercitazione >  >> Linux

Come uccidere i processi zombi in Ubuntu

Uno zombi o un processo defunto in Linux è un processo che è stato completato, ma la sua voce rimane ancora nella tabella dei processi a causa della mancanza di corrispondenza tra i processi padre e figlio. Di solito, un processo genitore controlla lo stato dei suoi processi figli attraverso la funzione wait(). Quando il processo figlio è terminato, la funzione wait segnala al genitore di uscire completamente dal processo dalla memoria. Tuttavia, se il genitore non riesce a chiamare la funzione wait per uno qualsiasi dei suoi figli, il processo figlio rimane attivo nel sistema come processo morto o zombie. Questi processi zombie potrebbero accumularsi, in gran numero, sul tuo sistema e influire sulle sue prestazioni. In tal caso, potresti dover uccidere questi zombi manualmente attraverso i modi e i comandi descritti in questo tutorial.

Questo tutorial è compatibile con tutte le versioni recenti di Ubuntu, incluso Ubuntu 22.04.

Visualizzazione dei processi zombi

Puoi controllare le prestazioni del tuo sistema osservando i vari processi in esecuzione sul tuo sistema, inclusi i processi zombie che alterano l'efficienza. Ubuntu ti consente di visualizzare questi processi nel modo seguente:

  • Attraverso l'interfaccia utente grafica
  • Attraverso la riga di comando

Tramite la GUI

Per visualizzare graficamente tutti i processi zombie in esecuzione sul tuo sistema, apri il Monitoraggio di sistema utility tramite il tuo Ubuntu Dash. Nella schermata seguente del mio monitor di sistema, puoi vedere che ci sono due zombi in esecuzione sul mio sistema. È anche possibile che il numero di processi zombie sul tuo sistema sia inferiore o superiore a quelli in esecuzione sul mio.

Attraverso la riga di comando

Il top comando visualizza una vista dettagliata dei processi in esecuzione sul sistema insieme alla memoria e alle risorse della CPU che stanno utilizzando. Ti fornisce anche informazioni su eventuali processi zombie in esecuzione sul tuo sistema. Apri il Terminale premendo Ctrl+Alt+T e quindi digita top . Ho ottenuto il seguente output dopo aver eseguito questo comando.

$ in alto

Puoi vedere nella seconda riga che c'è 1 processo zombie in esecuzione sul mio sistema.

Se desideri ulteriori dettagli sul processo zombie, usa il seguente comando:

$ ps axo stat,ppid,pid,comm | grep -w defunct

Questo comando ti darà lo stato, parentID, l'ID del processo, il programma che sta eseguendo il processo zombi (un programma fittizio con il nome "zombie" sul mio sistema). La bandiera defunta ti dice che questo è un processo morto e zombi.

Uccidere un processo zombi

Innanzitutto, cerchiamo di capire in che modo i processi zombi rappresentano una minaccia per le prestazioni del nostro sistema. È importante sapere che gli zombi sono processi morti e per lo più completi che non richiedono memoria o risorse della CPU. Tuttavia, a ciascuno di questi processi è assegnato un ID processo univoco che proviene da un pool limitato di PID riservati al proprio processore. Se un gran numero di zombi si raduna, consumerà la maggior parte del pool PID e i nuovi processi non potranno essere avviati a causa della mancanza di un ID processo.

Un piccolo numero di programmi defunti che occupano il tuo sistema non è una grande minaccia, ma ciò significa che i loro programmi padre non sono stati in grado di richiamarli a causa di un bug o di una funzione wait() mancante.

Quando un processo padre non è stato in grado di chiamare automaticamente la funzione wait(), è necessario segnalare manualmente al processo padre di eseguire la funzione wait su tutti i suoi figli in modo che quelli con uno stato completo possano essere richiamati. Possiamo farlo eseguendo il comando SIGCHLD. Quando ciò non funziona, possiamo uccidere manualmente il processo padre in modo che anche tutti i suoi figli zombi vengano uccisi, liberando gli ID processo per i nuovi processi.

Puoi uccidere i processi zombi nei seguenti modi:

  • Attraverso l'interfaccia utente grafica
  • Attraverso la riga di comando

Tramite la GUI

Puoi uccidere graficamente un processo zombie tramite l'utility Monitor di sistema come segue:

  1. Apri il Monitoraggio di sistema utility tramite Ubuntu Dash.
  2. Cerca il termine Zombie tramite la Cerca pulsante.
  3. Seleziona il processo zombi, fai clic con il pulsante destro del mouse e quindi seleziona Uccidi dal menu.

Il processo zombie verrà rimosso dal tuo sistema.

Attraverso la riga di comando

Dopo aver saputo che ci sono processi zombi in esecuzione sul tuo sistema tramite il comando in alto. Ecco come visualizzare i dettagli dei processi.

Il solito modo è usare il comando seguente che segnala al processo padre dello zombi di terminare il comando.

$ kill -s SIGCHLD PID

Questo comando potrebbe non funzionare in alcuni casi poiché non tutti i processi padre sono programmati correttamente per controllare i processi figlio. In tal caso, puoi terminare il processo padre tramite il seguente comando:

$ sudo kill -9 3376

Dopo aver ucciso tutti i processi zombi in questo modo ed eseguito il comando in alto, sarai in grado di vedere che non ci sono più processi zombi in esecuzione sul tuo sistema:

Dopo aver lavorato insieme a questo tutorial, puoi ottimizzare il tuo sistema operativo cercando eventuali processi zombie sul tuo sistema e uccidendoli manualmente tramite la riga di comando o l'interfaccia utente grafica. Questo atto libererà gli ID processo per i nuovi processi che desideri eseguire sul tuo sistema.


Linux
  1. Come uccidere un processo zombie su Linux

  2. Come trovare e uccidere il processo Zombie in Linux

  3. Cosa sono i processi zombi e come trovare e uccidere i processi zombi?

  4. Come uccidere un processo il cui genitore è init?

  5. Come eliminare i processi in esecuzione in Linux

Come trovare e uccidere i processi zombi in CentOS 8

Come creare un processo zombi fittizio in Ubuntu 18.04 LTS

Come uccidere i processi zombie in Ubuntu 20.04 LTS

Come KILL un processo su Linux

Come uccidere i processi in Linux usando kill, killall e pkill

Come riparare il sistema Ubuntu che non risponde?