1. Chiusura dei processi
Oggi facciamo un passo avanti e impariamo i comandi che permettono di chiudere i processi in modo efficace. Preparati, perché la pazienza verso i programmi "bloccati" sta per finire!
Ogni applicazione o comando avviato in Linux è un processo. Ma cosa fare se un programma si blocca, usa il 100% delle risorse del processore o semplicemente smette di funzionare correttamente? Il compito dell'amministratore (o dello sviluppatore) è intervenire e chiudere il processo "ribelle". In Linux, per questo scopo, abbiamo a disposizione un intero arsenale di strumenti: kill, killall e pkill. Non preoccuparti, nonostante i nomi minacciosi, non siamo qui per rompere tutto. Piuttosto, è un modo elegante per mettere ordine.
2. Comando kill
Fondamenti
Il comando kill termina un processo utilizzando il suo identificatore (PID). PID è un numero unico che il sistema assegna a ogni processo. Per esempio, se vuoi terminare un processo con PID 1234, usa il seguente comando:
kill 1234
Linux per sua natura è piuttosto democratico, quindi il comando kill non dà un ordine al processo di "morire", ma invia una richiesta di terminazione. Questa richiesta è chiamata "segnale". Di default, kill invia il segnale SIGTERM (15).
Che cos’è un segnale?
Linux utilizza segnali per comunicare con i processi. È come inviare cartoline postali con diverse intenzioni:
SIGTERM(15): "Per favore, termina". È una richiesta cortese al processo di concludere la sua esecuzione.SIGKILL(9): "Ora basta, sei licenziato!" Terminazione forzata del processo.SIGHUP(1): "Ehi, ricarica la configurazione". Utilizzato per riavviare alcuni processi senza fermarli.
Esempio di terminazione forzata di un processo:
kill -9 1234
Se un processo si rifiuta di terminare con SIGTERM, puoi inviargli un segnale più forte — SIGKILL.
Come scoprire il PID di un processo?
Per utilizzare il comando kill, devi conoscere il PID del processo. Qui vengono in aiuto comandi già noti come ps, top o htop. Per esempio, l’output del comando ps aux mostrerà tutti i processi in esecuzione:
ps aux | grep firefox
Questo comando troverà il processo Firefox e ne mostrerà il PID.
Processo terminato, puoi tirare un respiro di sollievo. Ma cosa fare se ci sono più processi "bloccati"? Qui entrano in gioco i comandi killall e pkill.
3. Comando killall
Comodità per chiudere molti processi contemporaneamente
Il comando killall permette di terminare tutti i processi con un nome specifico. Non devi cercare il PID manualmente, tutto diventa molto più semplice. Per esempio, se vuoi chiudere tutte le istanze di Firefox in esecuzione:
killall firefox
Come il comando kill, anche killall invia segnali ai processi. Puoi specificare un segnale preciso:
killall -9 firefox
Consiglio Utile
Fai attenzione con comandi come killall. Se indichi accidentalmente un processo troppo generico, ad esempio, killall python, potresti terminare contemporaneamente tutte le applicazioni Python in esecuzione, inclusi script importanti o attività di server.
Quali segnali sono supportati?
Per tutti i comandi kill, killall e pkill è possibile visualizzare l'elenco dei segnali disponibili usando il comando:
kill -l
4. Comando pkill
Cerchiamo i processi per nome (o parte di esso)
Il comando pkill funziona in modo simile a killall, ma è più flessibile. Ti consente di terminare processi che corrispondono a un determinato pattern. Per esempio:
pkill fire
Il comando terminerà tutti i processi che contengono la parola "fire" nel nome. È utile quando il nome del processo è lungo o ne conosci solo una parte.
Terminare i processi di utenti specifici
Puoi terminare i processi appartenenti a utenti specifici. Per esempio:
pkill -u username
Questo comando terminerà tutti i processi appartenenti all'utente username.
Confronto tra kill, killall e pkill
| Comando | Caratteristiche |
|---|---|
kill |
Termina un processo tramite il suo PID. Funziona in modo mirato. |
killall |
Termina tutti i processi con il nome specificato. Pratico per chiusure di massa. |
pkill |
Termina processi in base al nome o al pattern. Supporta parametri aggiuntivi, come il nome utente. |
5. Pratica: terminiamo i processi
Proviamo tutto ciò che abbiamo studiato in pratica. Per cominciare, avviamo alcuni processi di lunga durata:
sleep 300 &
sleep 400 &
sleep 500 &
Questi comandi creeranno tre processi in background con tempi di attesa diversi. Ora puoi lavorare con i comandi kill, killall e pkill.
- Visualizza tutti i processi
sleepin esecuzione utilizzando il comandops:
ps aux | grep sleep
Vedrai il PID di ciascun processo.
- Termina il processo con PID, ad esempio, 1234:
kill 1234
- Termina tutti i processi
sleepcontemporaneamente:
killall sleep
- Avvia altri processi
sleepe terminane alcuni utilizzandopkill:
pkill sl
6. Errori comuni e dettagli importanti
Se provi a terminare un processo per il quale non hai i permessi (ad esempio il processo di un altro utente), il comando restituirà un errore. Per farlo, devi avere i privilegi da superutente (sudo). Ad esempio:
sudo kill 1234
Un'altra fonte di confusione potrebbe essere l'uso di segnali troppo aggressivi come -9. Questo è l'equivalente di staccare la spina del computer: il sistema non avrà il tempo di liberare le risorse o salvare i dati. Usa SIGKILL solo come ultima risorsa.
Fai attenzione con killall e pkill, specialmente se stai gestendo un server. Terminare i processi "alla cieca" può portare alla perdita di dati importanti.
Perché è importante conoscere i comandi per terminare i processi?
Questi comandi hanno un'ampia gamma di applicazioni, dalle chiusure di applicazioni bloccate alla gestione dei processi server. Nei colloqui di lavoro, la conoscenza di kill e pkill può essere un indicatore importante della tua competenza, specialmente se si tratta di amministrazione di sistemi o lavorare con il backend.
Usa queste conoscenze per creare script che terminano automaticamente processi incontrollati o liberano le porte occupate. Ad esempio, prima di avviare un server che occupa la porta 8080, puoi usare:
pkill -f "port 8080"
La flessibilità e la potenza di questi comandi li rendono strumenti indispensabili per qualsiasi specialista Linux.
GO TO FULL VERSION