Differences

This shows you the differences between two versions of the page.

Link to this comparison view

uso:laboratoare:new:02-process:need-to-know [2018/10/10 17:30]
razvan.deaconescu
uso:laboratoare:new:02-process:need-to-know [2019/10/07 11:10] (current)
liza_elena.babu [Comunicare interprocese, folosind |]
Line 3: Line 3:
 Pentru această secțiune trebuie să vă asigurați că sunteți în directorul potrivit. Rulați comanda Pentru această secțiune trebuie să vă asigurați că sunteți în directorul potrivit. Rulați comanda
 <​code>​ <​code>​
-cd ~/uso.git/labs/​02-process/​support/​+cd ~/uso-lab/​02-process/​support/​
 </​code>​ </​code>​
  
 ==== Foreground & Background (&, fg, bg, jobs) ==== ==== Foreground & Background (&, fg, bg, jobs) ====
  
-Vom folosi ca exemplu programul ​''​bg-proc.sh''​. Acesta afișează în fiecare secundă, alternativ, ​câte un mesaj //Tick!// sau //Tock!//. Pornim programul:+Vom folosi ca exemplu programul bg-proc.sh. Acesta afișează în fiecare secundă câte un mesaj "Tick" ​sau "Tock". Pornim programul:
  
 <code bash> <code bash>
-student@uso:​~/​uso.git/labs/​02-process/​support$ ./​bg-proc.sh ​+student@uso:​~/​.../​02-process/​support$ ./​bg-proc.sh ​
 Tick! Tick!
 Tock! Tock!
Line 18: Line 18:
 </​code>​ </​code>​
  
-L-am terminat ​folosind combinația de taste **Ctrl+C**.+L-am terminat ​cu **Ctrl+C**:
  
-Îl pornim din nou și de data asta îl oprim folosind combinația de taste **Ctrl+Z**, ca mai jos.+Îl pornim din nou și de data asta îl oprim cu **Ctrl+Z**. ​Ce observăm?
  
 <code bash> <code bash>
-student@uso:​~/​uso.git/labs/​02-process/​support$ ./​bg-proc.sh ​+student@uso:​~/​.../​02-process/​support$ ./​bg-proc.sh ​
 Tick! Tick!
 Tock! Tock!
Line 30: Line 30:
 [1]+  Stopped ​                ​./​bg-proc.sh [1]+  Stopped ​                ​./​bg-proc.sh
 </​code>​ </​code>​
- 
-Apare mesajul ''​Stopped''​. 
  
 Verficăm dacă procesul încă există în sistem: Verficăm dacă procesul încă există în sistem:
  
 <code bash> <code bash>
-student@uso:~/uso.git/labs/​02-process/​support$ ps aux+student@uso~/​.../​02-process/​support$ ps aux
 USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND 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         ​1 ​ 0.0  0.3 160140 ​ 7152 ?        Ss   ​oct08 ​  0:03 /sbin/init splash
Line 47: Line 45:
  
 Pentru a reporni procesul avem 2 variante: Pentru a reporni procesul avem 2 variante:
-  - Pornim procesul în fundal (**background**folosind comanda **bg**. ​Acest lucru înseamnă că noi putem da comenzi, chiar dacă în fundal este un proces care afișează text +  - 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 
-  - Pornim procesul în prim-plan (**foreground**folosind comanda **fg**. ​Acest lucru înseamnă că procesul oprit anterior a revenit în prim-plan în terminal. Nu vom putea da alte comenzi.+  - 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.
  
 <code bash> <code bash>
-student@uso:​~/​uso.git/labs/​02-process/​support$ ./​bg-proc.sh+student@uso:​~/​.../​02-process/​support$ ./​bg-proc.sh
 Tick! Tick!
 Tock! Tock!
  
 [1]+  Stopped ​                ​./​bg-proc.sh [1]+  Stopped ​                ​./​bg-proc.sh
-student@uso:​~/​uso.git/labs/​02-process/​support$ bg+student@uso:​~/​.../​02-process/​support$ bg
 [1]+ ./​bg-proc.sh & [1]+ ./​bg-proc.sh &
-student@uso:​~/​uso.git/labs/​02-process/​support$ Tick!+student@uso:​~/​.../​02-process/​support$ Tick!
 Tock! Tock!
 lsTick! lsTick!
  
 batman.sh ​ bg-proc.sh ​ it-s-a-trap.sh batman.sh ​ bg-proc.sh ​ it-s-a-trap.sh
-student@uso:​~/​uso.git/labs/​02-process/​support$ Tock!+student@uso:​~/​.../​02-process/​support$ Tock!
 Tick! Tick!
 Tock! Tock!
 ^C ^C
-student@uso:​~/​uso.git/labs/​02-process/​support$ Tick!+student@uso:​~/​.../​02-process/​support$ Tick!
 Tock! Tock!
 </​code>​ </​code>​
  
-Puteți observa ​mai sus că am încercat să termin programul folosind **Ctrl+C**. Acest lucru nu a fost posibil pentru că acesta rula în fundal. Pentru ​aceasta ​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''​.+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** **Exerciții**
-  - Porniți programul ​''​bg-proc.sh''​ în **background**. +  - Porniți programul ​**bg-proc.sh**. 
-  - Treceți-l în **foreground** și apoi în **foreground**+  - Treceți-l în starea ''​foreground'' ​și apoi în background
-  - Terminați procesul ​folosind combinația ​**Ctrl+C** ​apoi, încă o dată, folosind ​utilitarul ​''​kill''​. +  - Terminați procesul ​cu **Ctrl+C** ​și cu utilitarul ​**kill** 
-  - Faceți același lucru și cu programul ​''​it-s-a-trap.sh''​.+  - Faceți același lucru și cu programul ​**it-s-a-trap.sh**
  
 ==== Redirectare ==== ==== Redirectare ====
Line 84: Line 82:
  
 <code bash> <code bash>
-student@uso:​~/​uso.git/​labs/​02-process/​support$ ps aux > procese.txt+student@uso:​~$ ps aux > procese.txt
 </​code>​ </​code>​
  
Line 90: Line 88:
  
 <code bash> <code bash>
-student@uso:​~/​uso.git/labs/​02-process/​support$ echo "prima linie din fisier"​ > fis.txt +student@uso:​~/​.../​02-process/​support$ echo "prima linie din fisier"​ > fis.txt 
-student@uso:​~/​uso.git/labs/​02-process/​support$ cat fis.txt ​+student@uso:​~/​.../​02-process/​support$ cat fis.txt ​
 prima linie din fisier prima linie din fisier
-student@uso:​~/​uso.git/labs/​02-process/​support$ echo "a2a linie din fisier"​ >> fis.txt  +student@uso:​~/​.../​02-process/​support$ echo "a2a linie din fisier"​ >> fis.txt  
-student@uso:​~/​uso.git/labs/​02-process/​support$ cat fis.txt ​+student@uso:​~/​.../​02-process/​support$ cat fis.txt ​
 prima linie din fisier prima linie din fisier
 a2a linie din fisier a2a linie din fisier
-student@uso:​~/​uso.git/labs/​02-process/​support$ echo "a3a linie din fisier"​ > fis.txt  +student@uso:​~/​.../​02-process/​support$ echo "a3a linie din fisier"​ > fis.txt  
-student@uso:​~/​uso.git/labs/​02-process/​support$ cat fis.txt ​+student@uso:​~/​.../​02-process/​support$ cat fis.txt ​
 a3a linie din fisier a3a linie din fisier
 </​code>​ </​code>​
Line 109: Line 107:
  
 <code bash> <code bash>
-student@uso:​~/​uso.git/​labs/​02-process/​support$ ps aux | grep sleep+student@uso:​~$ ps aux | grep sleep
 student ​ 22406  0.0  0.0  16116   828 pts/0    S    20:28   0:00 sleep 1000 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 student ​ 22408  0.0  0.0  23076  1084 pts/0    S+   ​20:​28 ​  0:00 grep --color=auto sleep
Line 116: Line 114:
 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''​. 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''​.
  
-Un alt exemplu: 
  
-<code bash> +**Exerciții** 
-student@uso:​~/​uso$ ls -lR | grep "​hello"​ +  - 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
--rw-r--r-- 1 student student ​  72 sep 10 12:25 hello.c +  - Înlănțuiți comanda precedentă cu **grep** pentru a căuta în **uso-lab** fișierele ce conțin cuvântul **lab**.
--rw-r--r-- 1 student student ​ 72 sep 10 12:25 hello.c +
--rw-r--r-- 1 student student 154 sep 10 12:25 hello.+
--rw-r--r-- 1 student student ​ 95 sep 10 12:25 simple_hello.c +
--rw-r--r-- 1 student student 580 sep 10 12:25 hello.s +
--rw-r--r-- 1 student student 1192 sep 10 12:25 hello.o +
--rw-r--r-- 1 student student ​  15 sep 10 12:25 hello.h +
--rw-r--r-- 1 student student ​  64 sep 10 12:25 hello_0.c +
--rw-r--r-- 1 student student ​  82 sep 10 12:25 hello_1.c +
--rw-r--r-- 1 student student ​ 111 sep 10 12:25 hello_2.c +
--rw-r--r-- 1 student student ​  83 sep 10 12:25 hello_3.c +
--rw-r--r-- 1 student student ​ 142 sep 10 12:25 hello_4.+
--rw-r--r-- 1 student student ​ 145 sep 10 12:25 hello_5.c +
--rw-r--r-- 1 student student ​ 150 sep 10 12:25 hello_6.c +
--rw-r--r-- 1 student student ​ 162 sep 10 12:25 hello_7.c +
--rw-r--r-- 1 student student 16 sep 10 12:25 hello.h +
-lrwxrwxrwx 1 student student ​ 7 sep 10 12:25 hello_from_the_other_side.h -> hello.h +
-</​code>​+
  
-Am afișat recursiv (-R) directorul **uso** și am transmis rezultatul către utilitarul **grep** pentru a căuta fișierele ce conțin cuvântul ''​hello''​. 
- 
-**Exerciții** 
-  - Afișați recursiv toate fișierele și directoarele din **uso.git**,​ redirectând totul într-un fișier. Înspectați fișierul pentru verificare. 
-  - Înlănțuiți comanda precedentă cu **grep** pentru a căuta în **uso.git** fișierele ce conțin cuvântul **lab**. 
uso/laboratoare/new/02-process/need-to-know.1539181831.txt.gz · Last modified: 2018/10/10 17:30 by razvan.deaconescu
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