Questa seconda parte sarà più pratica della precedente e spero di interessarvi a tal punto da inviarmi qualche e-mail all’indirizzo webmaster@megalinux.cloud. Nell’articolo potrete capire come utilizzare i segnali e in particolare la funzione del comando Kill che si rivela fondamentale nella gestione di un sistema GNU/Linux.
COSA ATTENDONO I PROCESSI?
Ogni processo attivo è in attesa di un segnale, e quest’ultimo può essere inviato dal Kernel o dall’utente ed è identificato in modo univoco da un process id o più semplicemente PID. I processi 0 e 1 sono utilizzati dal sistema, e quindi col cavolo che potete terminarli, mentre gli altri riuscirete ad “ucciderli” senza pietà. E’ ovvio che un utente root (il famoso superutente) può interrompere i processi degli altri utenti, ma quest’ultimi potranno al massimo terminare i propri.
Cercando di iniziare l’argomento, dovete sapere che vi sono trentadue tipi di segnali differenti definiti per i processi normali (i restanti sono detti “real-time”) utilizzati in un sistema GNU/Linux. Ogni segnale possiede un nome e un numero. Ma, vediamo nella seguente tabella l’elenco dei segnali più importanti e più utilizzati.
Nome | Numero | Descrizione |
---|---|---|
HUP | 1 | Questo segnale viene inviato per “rileggere” i file di configurazione di alcuni demoni senza doverli riavviare. |
INT | 2 | Questo segnale viene inviato quando si blocca un processo (funzione CTRL-C). |
KILL | 9 | Con questo segnale si Interrompe immediatamente e drasticamente il processo. |
TERM | 15 | Questo segnale è utilizzato per chiedere al processo di uscire in modo “normale”. |
TSTP | 20 | Ferma l’esecuzione, e resta in attesa per continuare. Con il comando CTRL-Z si effettua tale opzione sul processo. |
CONT | 18 | Permette di continuare l’esecuzione di quei processi “bloccati” con i segnali di SIGTSTP o SIGSTOP |
(I segnali più utilizzati)
Ogni nome del segnale è preceduto da un prefisso SIG e quindi il segnale INT diventa SIGINT, TERM diventa SIGTERM e così via.
IN PRATICA, L’UTILIZZO DEL COMANDO KILL
Per visualizzare i segnali basta digitare il comando kill -l. Per esempio, il seguente comando visualizza l’utilizzo del segnale TERM.
# kill -l 15
Di seguito un breve esempio dell’utilizzo del comando SIGTERM ai processi con PID 1567 e 1788.
# kill -15 1567 1788
# kill -s SIGTERM 1567 1788
L’utilizzo del segnale 15 (SIGTERM) permette un arresto “silenzioso” del processi, mentre il segnale 9 (SIGKILL) lo termina in modo drastico. Di seguito un altro esempio da shell bash.
# kill -9 1567 1788
Con l’utilizzo del segnale 9 il processo termina in modo immediato senza chiudere i file aperti e senza “pulire” ciò che il processo ha generato. Al posto del segnale 9 bisognerebbe utilizzare il segnale -15 così da non lasciare i dati elaborati dal processo in uno stato inconsistente.