Come tutti sappiamo Linux è un sistema operativo multitasking, cioè in grado di gestire più processi contemporaneamente facendo elaborare alla CPU il processo A per un determinato lasso di tempo, poi far elaborare il processo B e così via per tutti gli altri riprendendo il ciclo iniziale alla fine della coda dei processi; considerando le attuali potenze di calcolo delle CPU ad occhio nudo sembrano tutte operazione gestite in parallelo, quando in effetti non è così.
Quando in Linux avviamo un processo lo avviamo in foreground cioè in primo piamo e quindi possiamo normalmente adoperarlo, ma che succede se dobbiamo fare qualcos'altro mentre questo sta ancora lavorando? Possiamo o interromperlo oppure farlo lavorare in background (in secondo piano) e continuare così il nostro lavoro.
Per fare ci utilizzeremo i la combinazione di tasti Ctrl+Z. Esempio:

codice:
$ yes > prova.txt
[1]+ Stopped	yes > prova.txt
Questo significa che abbiamo congelato l'esecuzione del processo o job. Il numero che notiamo nelle due parentesi graffe è il numero di job mentre il "+" indica che si tratta del job corrente.
A questo punto per poter definitivamente "uccidere" il processo bisognerà utilizzare il comando kill seguito da percentuale e il numero del job:

codice:
$ kill %1
Per poter controllare che effettivamente il processo è stato ucciso bisognerà digitare il comando jobs che come output darà la lista dei processi ancora attivi.

Ora se volessimo far continuare il processo in background e avviarne di altri, dovremmo usare i comandi bg e fg. Ripetiamo l'esempio di prima:

codice:
$ yes > prova.txt
[1]+ Stopped	yes > prova.txt

$ bg %1
[1]+ yes > prova.txt
Come potete notare il processo numero 1 ora continua con l'esecuzione ma in background, infatti se provate ad avviare qualche altro processo il sistema risulterà un pò lento. Adesso riportiamo il processo in foreground e terminiamolo.

codice:
$ fg %1
yes > prova.txt

Premo la combinazione di tasti Ctrl+C per terminare il processo in esecuzione
Proviamo ora ad avviare pi processi contemporaneamente e poi a ucciderli.

codice:
$ yes > prova1.txt
[1]+ Stopped	yes > prova.txt

$ bg %1
[1]+ yes > prova1.txt

$ yes > /dev/null
[2]+ Stopped	yes > /dev/null

$ bg %2
[2]+ yes > /dev/null

$ yes > prova2.txt
[3]+ Stopped	yes > prova2.txt

$ bg %3
[3]+ yes > prova2.txt

$ jobs
[1]  Running	yes > prova1.txt
[2]- Running	yes > /dev/null
[3]+ Running	yes > prova2.txt

$ kill %1 %2 %3
Ora che abbiamo imparato a gestire i processi di un singolo utente, possiamo dare un occhiata al sistema, infatti Linux ogni volta che avvia un processo gli assegna un PID che è un numero univoco che identifica questo processo nel sistema, e tramite questo PID possiamo decidere di uccidere il processo senza paura di sbagliare.
Il comando che ci permette di vedere i processi attivi con i rispettivi PID è ps.

codice:
$ ps
 PID    TTY     TIME             CMD
 1322 pts/1    00:00:00   bash
 1353 pts/1    00:00:25   yes
 1354 pts/1    00:00:15   yes
 1355 pts/1    00:00:06   yes
 1356 pts/1    00:00:00   ps
Per uccidere un processo con il PID faremo quindi:

codice:
$ kill 1353