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