Introduzione
pkill
è un'utilità della riga di comando che invia segnali ai processi di un programma in esecuzione sulla base di determinati criteri. I processi possono essere specificati con i loro nomi completi o parziali, un utente che esegue il processo o altri attributi.
Il comando pkill
fa parte del pacchetto procps
(o procps-ng
), che è preinstallato su quasi tutte le distribuzioni Linux. pkill
è un wrapper per il programma pgrep
che stampa solo un elenco di processi corrispondenti.
pkill
permette di chiudere un processo inviando dei segnali tramite il terminale.
Questo articolo tratta le basi del comando pkill
su Linux.
Come usare il comando pkill
La sintassi per il comando pkill
è la seguente:
pkill [OPTIONS] <PATTERN>
La corrispondenza <PATTERN>
viene specificata usando espressioni regolari estese.
Se invocato senza alcuna opzione, pkill
invia il segnale 15
(TERM
) ai PID di tutti i programmi in esecuzione che corrispondono al nome specificato. Ad esempio, per interrompere con tutti i processi di Firefox, eseguiresti:
pkill -9 firefox
Il comando restituisce 0
quando almeno un processo in esecuzione corrisponde al nome richiesto. Altrimenti, il codice di uscita è 1
. Questo può essere utile quando utilizzato negli script di shell.
Per inviare un segnale diverso ai processi corrispondenti, invocare il comando pkill
con l'opzione --signal
, seguito dal nome del segnale numerico o simbolico. Un altro modo per inviare un segnale è eseguire pkill
seguito dal nome o dal numero del segnale preceduto da un trattino (-
).
Utilizzare il comando kill -l
per elencare tutti i segnali disponibili.
I segnali più comunemente usati sono:
1
(HUP
): per ricaricare un processo.9
(KILL
): per terminare un processo.15
(TERM
): per arrestare con un processo.
I segnali possono essere specificati in tre modi diversi:
- utilizzando un numero (ad es. -1)
- con il prefisso "SIG" (ad es. -SIGHUP)
- senza il prefisso "SIG" (ad es. -HUP).
Ad esempio, per ricaricare i processi Nginx dovresti eseguire:
pkill -HUP nginx
pkill
utilizza espressioni regolari per abbinare i nomi dei processi. È sempre una buona idea usare il comando pgrep
per stampare i processi corrispondenti prima di inviare loro dei segnali. Ad esempio, per elencare tutti i processi che contengono "ssh" nei loro nomi:
1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent
Se si desidera inviare un segnale solo ai processi i cui nomi sono esattamente come modello di ricerca, utilizzare:
pkill '^ssh$'
Il carattere (^
) corrisponde all'inizio della stringa e il dollaro $
alla fine.
Per impostazione predefinita, pkill
corrisponde solo al nome del processo. Quando viene utilizzata l'opzione -f
, il comando corrisponde a elenchi di argomenti completi. Se il comando contiene spazi, cita l'intero comando:
pkill -9 -f "ping 8.8.8.8"
Utilizzare l'opzione -u
per dire al comando pkill
per abbinare i processi eseguiti da un determinato utente:
pkill -u alice
Per specificare più utenti, separa i loro nomi con virgole:
pkill -u alice,nicole
Puoi anche combinare opzioni e schemi di ricerca. Ad esempio, per inviare il segnale KILL
a tutti i processi eseguiti sotto l'utente "alice" e contenente "gnome" nei loro nomi, digitare:
pkill -9 -u alice gnome
Per visualizzare solo i processi avviati meno di recente o più recenti , utilizzare l'opzione -n
(per i più recenti) o -o
(per i più vecchi).
Ad esempio, per eliminare la più recente screen, digitare questo comando:
pkill -9 -n screen
Conclusione
Il comando pkill
viene utilizzato per inviare segnali ai programmi in esecuzione sulla base di criteri diversi.
Per ulteriori informazioni sul comando pkill
, visitare la pagina man pkill o digitare nel terminale:
man pkill