Linux è un ottimo e avanzato sistema operativo, ma non è perfetto. Di tanto in tanto, alcune applicazioni potrebbero iniziare a comportarsi in modo irregolare e non rispondere o iniziare a consumare molte risorse di sistema. Le applicazioni che non rispondono non possono essere riavviate perché il processo dell'applicazione originale non si chiude mai completamente. L'unica soluzione è riavviare il sistema o terminare il processo dell'applicazione.
Esistono diverse utilità che ti consentono di terminare processi errati con kill
l'essere il più comunemente usato.
kill
Comando #
kill
è una shell incorporata nella maggior parte delle shell derivate da Bourne come Bash e Zsh. Il comportamento del comando è leggermente diverso tra le shell e lo standalone /bin/kill
eseguibile.
Usa il type
comando per visualizzare tutte le posizioni sul tuo sistema contenenti kill
:
type -a kill
kill is a shell builtin
kill is /bin/kill
L'output sopra dice che la shell incorporata ha la priorità sull'eseguibile standalone e viene utilizzata ogni volta che si digita kill
. Se vuoi usare il file binario, digita il percorso completo del file /bin/kill
. In questo articolo useremo il builtin Bash.
La sintassi di kill
il comando assume la forma seguente:
kill [OPTIONS] [PID]...
L'kill
comando invia un segnale a processi o gruppi di processi specificati, facendoli agire in base al segnale. Quando il segnale non è specificato, il valore predefinito è -15
(-TERMINE).
I segnali più comunemente usati sono:
1
(HUP
) - Ricarica un processo.9
(KILL
) - Termina un processo.15
(TERM
) - Interrompere con grazia un processo.
Per ottenere un elenco di tutti i segnali disponibili, invoca il comando con -l
opzione:
kill -l
I segnali possono essere specificati in tre modi diversi:
- Utilizzo del numero (ad es.
-1
o-s 1
). - Utilizzo del prefisso "SIG" (ad es.
-SIGHUP
o-s SIGHUP
). - Senza il prefisso "SIG" (ad es.
-HUP
o-s HUP
).
I seguenti comandi sono equivalenti tra loro:
kill -1 PID_NUMBER
kill -SIGHUP PID_NUMBER
kill -HUP PID_NUMBER
I PID forniti al kill
il comando può essere uno dei seguenti:
- Se
PID
è maggiore di zero, il segnale viene inviato al processo con ID uguale alPID
. - Se
PID
è uguale a zero, il segnale viene inviato a tutti i processi nel gruppo di processi corrente. In altre parole, il segnale viene inviato a tutti i processi appartenenti al GID della shell che ha invocato ilkill
comando. Usaps -efj
comando per visualizzare gli ID dei gruppi di processi (GID). - Se
PID
è uguale a-1
, il segnale viene inviato a tutti i processi con lo stesso UID dell'utente che invoca il comando. Se l'utente invocante è root, il segnale viene inviato a tutti i processi tranne init ekill
processo stesso. - Se
PID
è inferiore a-1
, il segnale viene inviato a tutti i processi nel gruppo di processi eq con GID uguale al valore assoluto delPID
.
Gli utenti regolari possono inviare segnali ai propri processi, ma non quelli che appartengono ad altri utenti, mentre l'utente root può inviare segnali ai processi di altri utenti.
Interruzione dei processi utilizzando il kill
Comando #
Per terminare o terminare un processo con il kill
comando, per prima cosa devi trovare il numero ID del processo (PID). Puoi farlo usando diversi comandi come top
, ps
, pidof
e pgrep
.
Diciamo che il browser Firefox non risponde e devi terminare il processo Firefox. Per trovare i PID del browser utilizzare il pidof
comando:
pidof firefox
Il comando stamperà gli ID di tutti i processi di Firefox:
6263 6199 6142 6076
Una volta che conosci i numeri dei processi, puoi ucciderli tutti inviando il TERM
segnale:
kill -9 6263 6199 6142 6076
Invece di cercare i PID e quindi terminare i processi, puoi combinare i comandi precedenti in uno solo:
kill -9 $(pidof firefox)
Processi di ricarica utilizzando il kill
Comando #
Un altro caso d'uso comune per kill
è inviare il HUP
signal, che dice ai processi di ricaricare le sue impostazioni.
Ad esempio, per ricaricare Nginx, è necessario inviare un segnale al processo master. L'ID del processo master Nginx può essere trovato in nginx.pid
file, che in genere si trova in /var/run
directory.
Usa il cat
comando per trovare il PID principale:
cat /var/run/nginx.pid
30251
Una volta trovato il PID master, ricarica le impostazioni di Nginx digitando:
sudo kill -1 30251
Il comando sopra deve essere eseguito come root o utente con sudoprivileges.
Conclusione #
L'kill
comando viene utilizzato per inviare un segnale ai processi. Il segnale più utilizzato è SIGKILL
o -9
, che termina i processi specificati.
Se hai domande o feedback, sentiti libero di lasciare un commento.