[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 32.   Controllo dei processi

In presenza di un ambiente in multiprogrammazione è importante il controllo dei processi in esecuzione. Un processo è un singolo eseguibile in funzione, ma un comando può generare diversi processi.

32.1   Visualizzazione dello stato dei processi

Il comando fondamentale per il controllo dei processi è ps.

ps x[Invio]

  PID TTY STAT  TIME COMMAND
  077   1 SW   0:01 (login)
  078   2 SW   0:01 (login)
  091   1 S    0:01 -bash
  132   2 S    0:01 -bash
  270   1 R    0:00 ps 

In questo caso ps mostra che sono in funzione due copie di bash (la shell Bash), ognuna su un terminale differente (in questo caso si tratta della prima e della seconda console virtuale di un sistema GNU/Linux): TTY 1 e 2. L'unico programma in esecuzione è lo stesso ps, che in questo esempio è stato avviato dal primo terminale.

Attraverso l'opzione f, si può osservare la dipendenza tra i processi.

ps xf[Invio]

  PID TTY STAT  TIME COMMAND
  077   1 SW   0:01 (login)
  091   1 S    0:01  \_ -bash
  275   1 R    0:00      \_ ps -f
  078   2 SW   0:01 (login)
  132   2 S    0:01  \_ -bash

In un sistema GNU/Linux esiste il programma pstree che offre un modo graficamente più aggraziato di osservare la dipendenza tra i processi.

pstree[Invio]

init-+-crond
     |-kflushd
     |-klogd
     |-kswapd
     |-login---bash
     |-login---bash---pstree
     |-4*[mingetty]
     |-4*[nfsiod]
     |-portmap
     |-rpc.mountd
     |-rpc.nfsd
     |-syslogd
     `-update

Mentre prima si vedevano solo i processi connessi ai terminali, adesso vengono visualizzati tutti i processi in funzione in modo predefinito. L'elenco cambia a seconda della configurazione del proprio sistema.

32.2   Eliminazione dei processi

I processi vengono eliminati automaticamente una volta che questi terminano regolarmente. A volte ci può essere la necessità di eliminare forzatamente un processo.

Per verificare questa situazione si può passare sulla seconda console virtuale e da lì avviare un programma inutile che viene poi eliminato attraverso la prima console.

[Alt F2]

Se fosse necessario eseguire l'accesso, è questo il momento di farlo.

yes[Invio]

y
y
y
y
...

Attraverso yes si ottiene un'emissione continua di lettere «y». Si può passare alla prima console e osservare la situazione.

[Alt F1]

ps x[Invio]

  PID TTY STAT  TIME COMMAND
  077   1 SW   0:01 (login)
  078   2 SW   0:01 (login)
  091   1 S    0:01 -bash
  132   2 S    0:01 -bash
  311   2 R    0:26 yes 

Si decide di eliminare il processo generato da yes attraverso l'invio di un segnale di conclusione.

kill 311[Invio]

Il numero 311 è il numero abbinato al processo, o PID, che si ottiene osservando le informazioni emesse da ps. Tornando sulla console in cui è stato eseguito yes si può osservare che questo ha terminato di funzionare.

[Alt F2]

...
y
y
Terminated

32.3   Processi sullo sfondo

Per mezzo della shell è possibile avviare dei comandi sullo sfondo, ovvero in background, in modo che si renda nuovamente disponibile l'invito per inserire altri comandi.

yes > /dev/null &[Invio]

Questo comando avvia yes dirottando l'output nel file /dev/null che in realtà è un dispositivo speciale paragonabile a una pattumiera senza fondo (tutto ciò che vi viene scritto è eliminato). Il simbolo e-commerciale (&), posto alla fine del comando, dice alla shell di eseguirlo sullo sfondo.

Naturalmente, ha senso eseguire un comando sullo sfondo quando questo non richiede input da tastiera e non emette output sul terminale.

32.4   Conclusione

Il controllo dei processi avviene essenzialmente attraverso ps e kill. La shell fornisce generalmente una forma di controllo sui comandi avviati attraverso di essa; questi vengono definiti normalmente job di shell.

Il capitolo 89 e i successivi trattano meglio di questo argomento.

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome controllo_dei_processi.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!