Dal punto di vista del sistema operativo le applicazioni sono eseguite impiegando uno o più processi, e consumano parte delle risorse del sistema, come la memoria e l'impiego del processore. Vi presentiamo alcuni comandi utili per monitorare e gestire tali processi e, di conseguenza, le applicazioni a cui appartengono.
Il comando ps visualizza una lista dei processi attualmente in esecuzione sul sistema, secondo i criteri da voi stabiliti.
Digitando questo comando senza alcun argomento verranno mostrati solo i processi avviati da voi che dipendono dal terminale in uso:
$ ps PID TTY TIME CMD 18614 pts/3 00:00:00 bash 20173 pts/3 00:00:00 ps
I processi sono controllati per mezzo di segnali. I comandi kill e killall sono impiegati per inviare segnali ai processi. Il comando kill richiede come argomento il numero di un processo, mentre killall richiede il nome di un processo.
kill [-SEGNALE] <numero_del_processo>
killall [-SEGNALE] <nome_del_processo>
I segnali possono essere specificati usando numeri o nomi. Digitate kill -l per visualizzare una lista dei segnali disponibili. Quelli usati più di frequente sono:
TERM
o
15
: questo è il segnale predefinito nel caso si ometta
il numero o il nome del segnale. Il processo viene chiuso senza
conseguenze.
STOP
o
19
: con questo segnale si mette temporaneamente in
pausa un processo. Inviate il segnale CONT
o
18
per far sì che riprenda l'esecuzione del
processo.
KILL
o
9
: questo segnale forza la chiusura del processo. Lo
si utilizza spesso per chiudere un processo che non risponde più
(«congelato»). Il processo viene terminato in maniera
brusca.
kill 785:
chiede al processo identificato dal numero 785
di
terminare l'esecuzione, dandogli la possibilità di effettuare qualsiasi
operazione di «pulizia» si renda necessaria;
kill -KILL
785: forza la terminazione del processo identificato dal numero
785
senza concedergli l'opzione di effettuare
operazioni di «pulizia». Il processo termina
immediatamente;
killall -TERM
make: chiede a tutti i processi dal nome make
lanciati da questo utente di finire le operazioni.
Qualunque cosa accada,
avrete la possibilità di controllare soltanto i vostri processi (a meno che
non siate root
), pertanto non dovete preoccuparvi di danneggiare
i processi di altri utenti perché non saranno interessati dai vostri
comandi.
top è un programma che può svolgere contemporaneamente le funzioni di ps e di kill; viene utilizzato anche per controllare i processi in tempo reale in quanto offre informazioni sull'uso della CPU e della memoria, sul tempo di esecuzione, etc. (si veda la Figura 8.1, «Controllo dei processi usando top»).
Il programma è interamente controllato da tastiera, e i comandi distinguono fra maiuscole e minuscole. Potete visualizzare l'aiuto premendo h. Quelli che seguono sono i comandi più utili:
k: invia
un segnale a un processo. top vi chiederà il PID del
processo, seguito dal numero o dal nome del segnale da inviare
(TERM
o 15
come opzione
predefinita);
M: questo
comando è usato per elencare i processi in base alla memoria utilizzata
(campo %MEM
);
P: questo
comando è usato per elencare i processi in base al tempo di CPU che
utilizzano (campo %CPU
): questo è l'ordinamento
predefinito;
u: questo comando serve a mostrare i processi di un utente in particolare, top vi chiederà quale. Dovrete inserire il nome dell'utente, non il suo UID. Se non fornite alcun nome, verranno visualizzati tutti i processi;
i: questo comando
opera come un interruttore: normalmente vengono visualizzati tutti i
processi, anche quelli sospesi, questo comando fa in modo che vengano
mostrati solo i processi attualmente in esecuzione (i processi il cui
campo STAT
indica R
,
Running), e non gli altri. Usando di nuovo
il comando si ritorna alla precedente visualizzazione.