Gestione dei processi

Si definisce processo un qualsiasi programma in esecuzione. Ad ogni processo il sistema associa un numero univoco, chiamato pid (process identification). Per visualizzare l'elenco dei processi attivi nel sistema digitare:

$ ps aux
che farà apparire qualcosa di simile:

USER    PID %CPU %MEM   VSZ  RSS TTY  STAT START   TIME COMMAND

root     1  0.1  0.0  1272  484 ?     S    15:18   0:05 init [2]       

root     2  0.0  0.0     0    0 ?     SW   15:18   0:00 [keventd]

root     4  0.0  0.0     0    0 ?     SW   15:18   0:00 [kswapd]

root     5  0.0  0.0     0    0 ?     SW   15:18   0:00 [bdflush]

root     6  0.0  0.0     0    0 ?     SW   15:18   0:00 [kupdated]

root    10  0.0  0.0     0    0 ?     SW   15:18   0:00 [knodemgrd_0]

root    11  0.0  0.0     0    0 ?     SW   15:18   0:00 [kjournald]

root    72  0.0  0.0     0    0 ?     SW   15:19   0:00 [kjournald]

root    83  0.0  0.0     0    0 ?     SW   15:19   0:00 [khubd]

root   256  0.0  0.1  2036  780 ?     S    15:19   0:00 /sbin/syslogd

root   319  0.0  0.2  2244 1360 ?     S    15:19   0:00 /sbin/klogd

root   328  0.0  0.0  1248  428 ?     S    15:19   0:00 /usr/sbin/inetd

root   343  0.0  0.3  4664 1672 ?     S    15:19   0:00 /usr/sbin/cupsd

root   594  0.0  0.2  2788 1212 ?     S    15:19   0:00 /usr/sbin/sshd

daemon 601  0.0  0.1  1384  580 ?     S    15:19   0:00 /usr/sbin/atd

root   604  0.0  0.1  1652  680 ?     S    15:19   0:00 /usr/sbin/cron

root   614  0.0  0.1  2504  724 ?     S    15:19   0:00 /usr/bin/kdm

mario  735  0.0  0.3  2752 1652 pts/1 S    15:20   0:00 /bin/bash

mario 1972  0.0  0.3  3740 1756 pts/1 R    16:29   0:00 ps aux

L'elenco evidenzia nell'ordine l'utente proprietario del processo, il numero di identificazione del processo (il suo pid), la percentuale di potenza del processore utilizzata, la percentuale di memoria usata, altre informazioni meno importanti fino all'ultima colonna che elenca il comando che ha avviato il processo.

Tutto ciò è molto utile se un programma si blocca e non si riesce a farlo sparire con i soliti metodi. In questa eventualità il comando precedente consente di conoscere il pid ad esso associato per poi inserire:

# kill -9 <pid>
equivalente a:

# kill -kill <pid>
La sintassi generale del comando26 è del tipo:

# kill <segnale> <pid>
L'equivalenza tra segnale e numero intero (come sopra illustrato) è mostrata digitando:

$ kill -l
che visualizza l'elenco dei segnali che possiamo inviare:

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL

 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE

 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2

13) SIGPIPE     14) SIGALRM     15) SIGTERM     17) SIGCHLD

18) SIGCONT     19) SIGSTOP     20) SIGTSTP     21) SIGTTIN

22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ

26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO

30) SIGPWR      31) SIGSYS      32) SIGRTMIN    33) SIGRTMIN+1

34) SIGRTMIN+2  35) SIGRTMIN+3  36) SIGRTMIN+4  37) SIGRTMIN+5

38) SIGRTMIN+6  39) SIGRTMIN+7  40) SIGRTMIN+8  41) SIGRTMIN+9

42) SIGRTMIN+10 43) SIGRTMIN+11 44) SIGRTMIN+12 45) SIGRTMIN+13

46) SIGRTMIN+14 47) SIGRTMIN+15 48) SIGRTMAX-15 49) SIGRTMAX-14

50) SIGRTMAX-13 51) SIGRTMAX-12 52) SIGRTMAX-11 53) SIGRTMAX-10

54) SIGRTMAX-9  55) SIGRTMAX-8  56) SIGRTMAX-7  57) SIGRTMAX-6

58) SIGRTMAX-5  59) SIGRTMAX-4  60) SIGRTMAX-3  61) SIGRTMAX-2

62) SIGRTMAX-1  63) SIGRTMAX    

ove si vede che il segnale kill (SIGKILL) corrisponde al numero nove. Se non riuscite neanche così ad arrestare il programma impazzito allora riavviate la macchina con:

# reboot
Potreste infine avere bisogno di sospendere temporaneamente un processo per poi riavviarlo in seguito. Debian fornisce una serie di script nella cartella /etc/init.d (vedere il paragrafo sub:Init) che permettono di avviare e fermare molti processi al vostro comando, senza bisogno di riavviare la macchina. Esempio:

Per fermare il servizio di web server di Apache27:

# /etc/init.d/apache stop
Allo stesso modo per riavviare il servizio28:

# /etc/init.d/apache start



Subsections
Mauro Darida 2006-07-25