Esistono numerosi modi per chiudere un processo sulle distribuzioni Linux, la shell infatti ci offre una vasta scelta di tool appositi e oggi vi parleremo di:

  1. kill
  2. pkill
  3. killall

Di base la nostra sintassi per terminare un processo sarà:

[command] [signal] [PID]

Il comando può essere kill, pkill o killall, mentre il signal è generalmente SIGKILL (9) o SIGTERM (15). I comandi di kill infatti offrono solitamente una pletora di signal che possono essere usati per dare precedenza al comando e per identificarlo come prioritario su altri processi eseguiti dal sistema.

SIGKILL sta per Kill Signal, dunque sarà eseguito un comando di kill di un determinato processo immediatamente, questo comando non potrà dunque essere ignorato o ritardato in nessun modo dal sistema. SIGTERM significa invece termination signal, tecnicamente è il modo migliore per terminare un processo ma ha priorità inferiore rispetto a SIGKILL e dunque può essere ignorato o ritardato dal sistema.

Se si vuole essere sicuri di terminare un processo è necessario ottenere il suo PID, si tratta di una serie di numeri che identificano in modo inequivocabile il processo avviato. Per farlo possiamo sfruttare tool come Htop oppure sfruttare questo comando:

ps aux | grep "ssh"

e si otterrà un output simile:

picchio@Yoda:~$ ps aux | grep "ssh"
picchio     19  0.0  0.0  12896  1116 tty1     S    18:25   0:00 grep --color=auto ssh
picchio@Yoda:~$

da qui possiamo vedere che il PID è 12896, dunque da ora possiamo provare a terminare il demone di ssh:

sudo kill 12896

Si possono anche terminare più processi insieme indicando più di un PID:

sudo kill -9 PID1 PID2 PID3

Solitamente il PID si usa quando si vuole terminare un determinato processo figlio di un programma avviato, ad esempio se abbiamo un Web server attivo con una determinata funzione bloccata possiamo identificarla tramite il PID ed eseguire un kill mirato.

Nel caso non si specificasse il tipo di signal da utilizzare in automatico kill userà TERM in modo da rendere la richiesta più importate degli altri comandi in corso. Con pkill invece basterà usare questa sintassi:

sudo pkill -e ssh
ssh killed (pid 12896)

L'opzione "-e" indica a pkill di mostrare esattamente ciò che ha terminato. Tuttavia è bene tenere presente che pkill andrà a terminare tutti i processi associati al programma indicato dall'utente automaticamente, dunque pkill va usato solo quando si è interessati a terminare anche i processi figli di una determinata applicazione.

La sintassi di killall è abbastanza simile:

killall -v ssh
Killed ssh(12896) with signal 15

in questo caso l'opzione "-v" si occupa di mostrare all'utente cosa esattamente è stato terminato e in che modo, in questo caso con il signal 15. killall risulta essere molto comodo perché non richiede necessariamente un PID ma può terminare un processo semplicemente indicando il suo nome.

Nel caso si volesse terminare un gruppo di processi si potrà ricorrere all'istruzione:

sudo kill -e -g root ssh
CommentaDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *