mercoledì 1 dicembre 2010

La gestione dei processi

La gestione dei processi è sicuramente un argomento delicato ma allo stesso tempo utile. Solitamente, quando un programma non risponde ai nostri comandi ci piacerebbe chiuderlo ed eventualmente riprovare. La maggior parte delle distribuzioni GNU/Linux prevede un task manager per la gestione dei processi. Qui però ci occuperemo della gestione dei processi attraverso la riga di comando. Con kill e killall possiamo chiudere uno o più processi.
Il comando kill chiude il processo legato al PID passato come parametro. Il comando killall, invece, chiude tutti i processi generati dallo stesso programma (o eseguibile).
In realtà i comandi kill e killall inviano ai processi dei segnali. Alcuni di questi segnali possono essere ignorati dai processi (i programmi in esecuzione), altri invece non possono essere ignorati. Il segnale inviato di default per entrambi i comandi è il segnale TERM (valore numerico 15), che dice al processo di chiudersi. Ogni segnale ha un codice sicché possiamo dire ai comandi il segnale da inviare attraverso quest'ultimo, oppure indicare il segnale da inviare attraverso il nome. Ad ogni segnale corrisponde un'azione. Per un elenco dei segnali e delle azioni associate consultate le pagine del manuale in linea, con il comando man kill oppure man killall. La sintassi usata dal comando è kill -segnale PID , oppure killall -segnale NOME_PROCESSO. Dove segnale può essere sia il codice che il nome del segnale da inviare. Ecco i segnali più usati:
  • 15, TERM: chiude il processo offrendo al programma la possibilità di chiudere tutti i file e le applicazioni aperte;
  • 9, KILL: a differenza di TERM è più istantaneo dal momento che non aspetta il programma;
  • 1, HUP: se il processo è legato a un servizio che non sta funzionando come dovrebbe meglio inviare questo segnale. Il servizio, in questo caso, viene interrotto e successivamente riavviato.
Se con il comando killall mousepad chiudo tutti i processi generati dall'eseguibile e quindi tutte le finestre di mousepad aperte, come faccio a chiuderne una sola? E' evidente che mi serve il PID del processo della finestra che vorrei chiudere (in maniera tale da usare, poi, il comando kill). Per cercare un PID bisogna affidarsi a ps, cosa che vedremo prossimamente.

Nessun commento:

Posta un commento