Need to Know

Pentru această secțiune trebuie să vă asigurați că sunteți în directorul potrivit. Rulați comanda

cd ~/uso-lab/02-process/support/

Foreground & Background (&, fg, bg, jobs)

Vom folosi ca exemplu programul bg-proc.sh. Acesta afișează în fiecare secundă câte un mesaj “Tick” sau “Tock”. Pornim programul:

student@uso:~/.../02-process/support$ ./bg-proc.sh 
Tick!
Tock!
Tick!
^C

L-am terminat cu Ctrl+C:

Îl pornim din nou și de data asta îl oprim cu Ctrl+Z. Ce observăm?

student@uso:~/.../02-process/support$ ./bg-proc.sh 
Tick!
Tock!
Tick!
^Z
[1]+  Stopped                 ./bg-proc.sh

Verficăm dacă procesul încă există în sistem:

student@uso~/.../02-process/support$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3 160140  7152 ?        Ss   oct08   0:03 /sbin/init splash
root         2  0.0  0.0      0     0 ?        S    oct08   0:00 [kthreadd]
[...]
**student  23597  0.0  0.1  21532  3532 pts/0    T    09:53   0:00 /bin/bash ./bg-proc.sh**
student  23600  0.0  0.0  16116   780 pts/0    T    09:53   0:00 sleep 1
student  23601  0.0  0.1  46012  3784 pts/0    R+   09:53   0:00 ps aux

Pentru a reporni procesul avem 2 variante:

  1. Pornim procesul în mod interactiv folosind comanda bg. Asta înseamnă că noi putem da comenzi, chiar dacă în fundal este un proces care afișează text
  2. Pornim procesul în mod neinteractiv folosind comanda fg. Asta înseamnă că procesul oprit anterior a revenit în prim-plan în terminal. Nu vom putea da alte comenzi.
student@uso:~/.../02-process/support$ ./bg-proc.sh
Tick!
Tock!
 
[1]+  Stopped                 ./bg-proc.sh
student@uso:~/.../02-process/support$ bg
[1]+ ./bg-proc.sh &
student@uso:~/.../02-process/support$ Tick!
Tock!
lsTick!
 
batman.sh  bg-proc.sh  it-s-a-trap.sh
student@uso:~/.../02-process/support$ Tock!
Tick!
Tock!
^C
student@uso:~/.../02-process/support$ Tick!
Tock!

Puteți observa că am încercat să termin programul folosind Ctrl+C. Acest lucru nu a fost posibil pentru că acesta rula în fundal. Pentru asta trebuie să aducem procesul în prim-plan și să îl terminăm sau să îi aflăm PID-ul și să-l terminăm folosind utilitarul kill.

Exerciții

  1. Porniți programul bg-proc.sh.
  2. Treceți-l în starea foreground și apoi în background.
  3. Terminați procesul cu Ctrl+C și cu utilitarul kill
  4. Faceți același lucru și cu programul it-s-a-trap.sh

Redirectare

Pentru a redirecta lista proceselor într-un fișier, folosim următoarea comandă:

student@uso:~$ ps aux > procese.txt

Un alt exemplu de redirectare este:

student@uso:~/.../02-process/support$ echo "prima linie din fisier" > fis.txt
student@uso:~/.../02-process/support$ cat fis.txt 
prima linie din fisier
student@uso:~/.../02-process/support$ echo "a2a linie din fisier" >> fis.txt 
student@uso:~/.../02-process/support$ cat fis.txt 
prima linie din fisier
a2a linie din fisier
student@uso:~/.../02-process/support$ echo "a3a linie din fisier" > fis.txt 
student@uso:~/.../02-process/support$ cat fis.txt 
a3a linie din fisier

Putem observa că la a3a linie am folosit > în loc de » și am șters conținutul anterior al fișierului.

Comunicare interprocese, folosind |

Putem căuta după un anumit proces din sistem astfel:

student@uso:~$ ps aux | grep sleep
student  22406  0.0  0.0  16116   828 pts/0    S    20:28   0:00 sleep 1000
student  22408  0.0  0.0  23076  1084 pts/0    S+   20:28   0:00 grep --color=auto sleep

Care este logica din spatele comenzii? În loc să ne afișeze nouă pe ecran rezultatul comenzii ps aux, acesta a fost transmis către următoarea comandă grep. Comanda din urmă a căutat cuvântul sleep în rezultatul comenzi ps aux.

Exerciții

  1. Afișați recursiv toate fișierele și directoarele din uso-lab, redirectând totul într-un fișier. Înspectați fișierul pentru verificare.
  2. Înlănțuiți comanda precedentă cu grep pentru a căuta în uso-lab fișierele ce conțin cuvântul lab.
uso/laboratoare/new/02-process/need-to-know.txt · Last modified: 2019/10/07 11:10 by liza_elena.babu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0