Asupra unui proces, odată pornit, se pot efectua următoarele operații:
– Terminarea
– Suspendarea
– Reluarea unui proces suspendat
– Mutarea în background
– Aducerea în foreground
– Listarea proceselor
Comanda jobs va arăta programele lansate în background de la terminalul curent.
[gxg@x /]$ jobs
[1]- Running yes >/dev/null & (wd: ~)
[2]+ Running tar -zcf ~/test2.tgz usr/doc/* &
[gxg@x /]$
Pentru a vedea procesele pornite si de la alte terminale puteti folosi comanda ps: Comanda “ps” (prescurtare de la Processes Status) este mai tare decat “jobs”. Pentru manipularea unui proces este necesara cunoasterea identificatorului procesului (PID) furnizat de aceasta comanda.
[gxg@x gxg]$ ps
PID TTY STAT TIME COMMAND
287 1 S 0:00 -bash
288 2 S 0:00 -bash
329 2 S 0:00 /usr/bin/mc -P
331 p0 S 0:00 bash -rcfile .bashrc
335 1 R 0:00 ps
[gxg@x gxg]$
Terminarea
În unele situații este de dorit oprirea forțată a proceselor, înainte de terminarea lor firească. După terminarea procesului, memoria ocupată se eliberează. Pentru aceasta se folosește comanda “kill”.
[gxg@x gxg]$ ps
PID TTY STAT TIME COMMAND
287 1 S 0:00 -bash
288 2 S 0:00 -bash
289 3 S 0:00 -bash
329 2 S 0:01 /usr/bin/mc -P
331 p0 S 0:00 bash -rcfile .bashrc
348 1 S 0:01 top
362 3 R 0:00 ps
[gxg@x gxg]$ kill 348
[gxg@x gxg]$ ps
PID TTY STAT TIME COMMAND
287 1 S 0:00 -bash
288 2 S 0:00 -bash
289 3 S 0:00 -bash
329 2 S 0:01 /usr/bin/mc -P
331 p0 S 0:00 bash -rcfile .bashrc
363 3 R 0:00 ps
[gxg@x gxg]$
Dacă programul este în foreground (acceptă comenzi de la tastatură), atunci el (de regulă) se poate opri folosind combinația de taste Control-C. Cele două metode sunt echivalente pentru ca în fiecare caz sistemul trimite procesului respectiv semnalul “TERM” pentru încheierea programului.
Suspendarea
Suspendarea unui proces înseamnă oprirea lui temporară, cu posibilitatea continuării rulării sale. Spre deosebire de terminare, programul “îngheață” în starea sa la momentul suspendării, iar memoria ocupata cu acest proces NU este eliberată.
Pentru suspendarea unui program care rulează în foreground se poate apăsa Control-Z. Dacă programul rulează în background, pentru stoparea sa trebuie dată comanda “kill” cu parametrul “-STOP”
$ kill -STOP 435
435 reprezintă identificatorul procesului care se dorește a fi stopat.
Acest identificator îl puteți afla folosind comanda “ps”
Reluarea unui proces suspendat
În mod analog cu comenzile anterioare, “kill -CONT” permite continuarea unui proces suspendat. Această continuare se va face în background. Două comenzi utile sunt “fg” și “bg”: Comanda “fg” continuă în foreground un proces întrerupt, iar comanda “bg” în background.
Aducerea unui proces în foreground
Dacă procesul este stopat sau rulează în background, aducerea lui în foreground se face folosind comanda “fg”. Dacă sunt mai mult de 2 procese în această stare, comanda “fg” (sau “bg”) trebuie urmată de un număr în felul următor:
[gxg@x gxg]$ jobs
[1] Stopped yes
[2]- Stopped yes
[3]+ Stopped grep k
[gxg@x gxg]$ fg 3
grep k
(Ctrl+Z)
[3]+ Stopped grep k
[gxg@x gxg]$
După cum se vede din exemplul anterior, procesele sunt numerotate în ordine crescătoare, iar numărul corespunzător fiecărui proces îl putem afla folosind comanda “jobs”. Acest număr este diferit de PID (identificatorul procesului) aflat prin comanda “ps” (Processes Status).
Mutarea unui proces în background
Pentru a muta un proces (care rulează în foreground) în background, se poate proceda în felul următor: apăsați Control-Z pentru a opri procesul. În acest moment procesul este suspendat. Tastați comanda “bg” pentru a continua în background procesul stopat. Pentru aducerea lui în foreground, tastați comanda “fg”.