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 <numero_del_processo>
killall <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 19.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.