Comandi per la gestione dei processi


Per vedere i processi attivi vi sono almeno due comodi comandi:

Ogni processo è identificato da un pid, ossia da un numero intero.

I processi che vengono lanciati da una shell possono essere eseguiti in due diverse modalità:

Perché un processo giri in background è sufficiente che il comando che lo lancia sia seguito da una "e commerciale" (&). A un processo in background viene assegnato un job identificato da un numero (visualizzato tra parentesi quadre) da non confondere col pid.

Un processo in foreground può essere sospeso premendo Ctrl-Z sulla shell da cui è stato avviato. Quando un processo viene sospeso, appare una linea di testo sulla console con un numero intero tra parentesi quadre che rappresenta il numero di job assegnato al processo sospeso.

Un processo sospeso può essere riattivato:

il comando jobs mostra tutti i jobs (attivi o sospesi) della shell (NB: la lista dei jobs è locale alla shell, mentre la lista dei processi visibile con ps o top è globale su tutta la macchina).

Per forzare la conclusione di un processo si può usare il comando kill seguito dal pid oppure dall'identificativo di job preceduto dal segno di percentuale.

In realtà il comando kill serve in generale a mandare un segnale a un processo; il meccanismo dei segnali serve nei sistemi UNIX per consentire ai processi di comunicare tra di loro (per vedere una lista dei segnali, si può consultare per esempio man kill).
I segnali sono identificati da numeri interi e da nomi simbolici, il comando kill -n p manda il segnale n (numerico) al processo identificato dal pid p.
Di default il comando kill invia il segnale TERM (15) che è un segnale di terminazione "gentile", ossia può essere ignorato dal processo ricevente: se si vuole dare una certa terminazione al processo è necessario inviargli il segnale KILL (9).