Sei interessato a saperne di più sull’amministrazione di Linux? Esplora questi corsi di formazione Linux.
- Introduzione a Linux (LFS101x) – Free
- Essentials of Linux System Administration (LFS201)
Scopri come uccidere i processi erranti in questo tutorial dai nostri archivi.
Immagine questo: Hai lanciato un’applicazione (sia dal menu del desktop preferito o dalla riga di comando) e si inizia a utilizzare che ha lanciato app, solo per farlo bloccare su di voi, smettere di eseguire, o inaspettatamente morire. Si tenta di eseguire nuovamente l’applicazione, ma si scopre l’originale mai veramente spento completamente.
Cosa fai? Si uccide il processo. Ma come? Che ci crediate o no, la soluzione migliore si trova più spesso all’interno della riga di comando. Per fortuna, Linux ha tutti gli strumenti necessari per consentire a te, all’utente, di uccidere un processo errante. Tuttavia, prima di avviare immediatamente quel comando per uccidere il processo, devi prima sapere qual è il processo. Come ti prendi cura di questo compito a strati? In realtà è abbastanza semplice once una volta che conosci gli strumenti a tua disposizione.
Lascia che ti presenti a detti strumenti.
I passaggi che sto per delineare funzioneranno su quasi tutte le distribuzioni Linux, che si tratti di un desktop o di un server. Mi occuperò rigorosamente della riga di comando, quindi apri il tuo terminale e preparati a digitare.
Individuazione del processo
Il primo passo per uccidere il processo che non risponde è localizzarlo. Ci sono due comandi che uso per individuare un processo: top e ps. Top è uno strumento che ogni amministratore dovrebbe conoscere. Con top, si ottiene un elenco completo del processo attualmente in esecuzione. Dalla riga di comando, issue top per visualizzare un elenco dei processi in esecuzione (Figura 1).
Da questa lista vedrete alcune informazioni piuttosto importanti. Ad esempio, Chrome non risponde. Secondo il nostro display in alto, possiamo discernere che ci sono quattro istanze di Chrome in esecuzione con ID di processo (PID) 3827, 3919, 10764 e 11679. Questa informazione sarà importante avere con un particolare metodo di uccidere il processo.
Anche se top è incredibilmente utile, non è sempre il mezzo più efficiente per ottenere le informazioni necessarie. Diciamo che sai che il processo di Chrome è ciò di cui hai bisogno per uccidere e non vuoi dover dare un’occhiata alle informazioni in tempo reale offerte da top. Per questo, puoi utilizzare il comando ps e filtrare l’output tramite grep. Il comando ps riporta un’istantanea di un processo corrente e grep stampa le linee corrispondenti a un motivo. Il motivo per cui filtriamo ps attraverso grep è semplice: Se si emette il comando ps da solo, si otterrà un elenco di snapshot di tutti i processi correnti. Vogliamo solo l’elenco associato a Chrome. Quindi, questo comando è simile:
ps aux | grep chrome
aux opzioni sono come segue:
-
un = mostra i processi di tutti gli utenti
-
u = display del processo utente/proprietario
-
x = mostra anche i processi che non sono attaccati al terminale
L’opzione x è importante quando siete a caccia di informazioni per quanto riguarda una applicazione grafica.
Quando emetti il comando sopra, ti verranno fornite più informazioni di quelle necessarie (Figura 2) per l’uccisione di un processo, ma a volte è più efficiente dell’utilizzo di top.
Uccidere il processo
Ora arriviamo al compito di uccidere il processo. Abbiamo due informazioni che ci aiuteranno a uccidere il processo errante:
-
Nome processo
-
ID processo
Che si utilizza determinerà il comando utilizzato per la terminazione. Ci sono due comandi usati per uccidere un processo:
-
kill – Uccidi un processo per ID
-
killall – Uccidi un processo per nome
Ci sono anche diversi segnali che possono essere inviati ad entrambi i comandi kill. Quale segnale si invia sarà determinato da quali risultati si desidera dal comando kill. Ad esempio, è possibile inviare il segnale HUP (hang up) al comando kill, che riavvierà efficacemente il processo. Questa è sempre una scelta saggia quando è necessario riavviare immediatamente il processo (come nel caso di un demone). È possibile ottenere un elenco di tutti i segnali che possono essere inviati al comando kill emettendo kill-l. Troverete un numero piuttosto elevato di segnali (Figura 3).
I segnali di kill più comuni sono:
Signal Name |
Single Value |
Effect |
SIGHUP |
Hangup |
|
SIGINT |
Interrupt from keyboard |
|
SIGKILL |
Kill signal |
|
SIGTERM |
Termination signal |
|
SIGSTOP |
17, 19, 23 |
Stop the process |
La cosa bella di questo è che puoi usare il valore del segnale al posto del nome del segnale. Quindi non devi memorizzare tutti i nomi dei vari segnali.
Quindi, ora usiamo il comando kill per uccidere la nostra istanza di Chrome. La struttura per questo comando sarebbe:
kill SIGNAL PID
Dove SIGNAL è il segnale da inviare e PID è l’ID del processo da uccidere. Sappiamo già, dal nostro comando ps che gli ID che vogliamo uccidere sono 3827, 3919, 10764 e 11679. Quindi, per inviare il segnale di uccisione, emettevamo i comandi:
kill -9 3827kill -9 3919kill -9 10764kill -9 11679
Una volta che abbiamo emesso i comandi di cui sopra, tutti i processi di Chrome saranno stati uccisi con successo.
Prendiamo la strada facile! Se sappiamo già che il processo che vogliamo uccidere si chiama chrome, possiamo usare il comando killall e inviare lo stesso segnale al processo in questo modo:
killall -9 chrome
L’unico avvertimento al comando precedente è che potrebbe non catturare tutti i processi chrome in esecuzione. Se, dopo aver eseguito il comando precedente, emetti il comando ps aux / grep chrome e vedi i processi rimanenti in esecuzione, la soluzione migliore è tornare al comando kill e inviare il segnale 9 per terminare il processo tramite PID.
Terminare i processi reso facile
Come puoi vedere, uccidere i processi erranti non è così impegnativo come avresti potuto pensare. Quando finisco con un processo testardo, tendo a iniziare con il comando killall in quanto è il percorso più efficiente per la terminazione. Tuttavia, quando si finisce con un processo davvero grintoso, il comando kill è la strada da percorrere.
Scopri di più su Linux attraverso il corso gratuito “Introduzione a Linux” della Linux Foundation e di edX.