Introduzione
Esistono vari modi per uccidere efficacemente un processo: fermare un processo per nome, terminare un processo specificando parte del nome, uccidere un processo sottolineando il processo con il cursore ecc. Tutte le convenzioni di kill seguenti invieranno il segnale TERM al processo specificato. Per i segnali, è possibile utilizzare il nome del segnale o il numero del segnale. Bisogna cercare il PID del processo e darlo come argomento per terminare il processo.
Come uccidere o fermare un processo in Linux
Per terminare un processo si usa il comando kill. Questo comando, tuttavia, può essere utilizzato anche per inviare diversi segnali ai vari processi. Per vedere l'elenco dei segnali che potete inviare digitate:
kill -l
Ad ogni comando è associato un numero.
Ad esempio:
kill -9 5187
Dove -9 è il numero del segnale da inviare e 5187 è il PID del processo che vogliamo terminare.
Attenzione questo elenco varia a seconda del sistema in uso.
Di seguito i parametri che potrebbero risultati più utili:
- SIGHUP - è usato per inviare ad un processo una richiesta di hang-up; alcuni processi che ricevono un segnale di questo tipo provvedono a riavviarsi ricaricando il proprio file di configurazione;
- SIGQUIT - è usato per inviare una richiesta di uscita ad un programma;
- SIGTERM - si tratta di una richiesta piuttosto soft di terminazione: in questo caso il processo dovrebbe avviare alcune procedure prima di terminare;
- SIGKILL - è usato per uccidere un processo quando SIGQUIT e SIGTERM non funzionano.
Per verificare che il processo sia stato effettivamente terminato sarà sufficiente controllare nuovamente l'elenco dei processi.
Con il comando pkill, è possibile fornire un nome di processo, un nome utente o un altro metodo per indicare a quale processo (o processi) inviare un segnale. Quindi non è necessario utilizzare il PID del processo:
pkill sleep
Quanto segue invierà un segnale di kill a tutti i processi di proprietà dell'utente noviello:
pkill -u noviello
prima di utilizzare il comando pkill, utilizzare il comando pgrep -l per visualizzare il PID del processo e il nome del processo o dei processi di corrispondenza:
pgrep -l sleep
Il comando killall, richiede il nome del processo invece del PID e provvederà a terminare tutti i processi corrispondenti a quel nome.
Ad esempio:
killall -9 apache2
Potrebbe accadere che i comandi generici per terminare un processo come kill o killall o pkill, potrebbero non essere sufficienti.
Per terminare in modo definitivo un processo, utilizzare il comando -KILL.
Determinare innanzitutto il suo PID di processo e quindi ucciderlo nel modo seguente:
pidof apache2
sudo kill -KILL 5187