Manipularea Proceselor

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”.

Leave a comment