This shows you the differences between two versions of the page.
uso:laboratoare:new:02-process:need-to-know [2018/10/10 17:38] razvan.deaconescu [Comunicare interprocese, folosind |] |
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 | ||
</code> | </code> | ||
- | 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''. |
- | În exemplul de mai jos | ||
- | <code bash> | + | **Exerciții** |
- | student@uso:~/uso.git/labs/02-process/support$ ls -lR ~/uso.git/ | egrep '*\.c' | + | - 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 Oct 9 21:46 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 133 Oct 9 21:46 simple_math.c | + | |
- | -rw-r--r-- 1 student student 72 Oct 9 21:46 hello.c | + | |
- | -rw-r--r-- 1 student student 105 Oct 9 21:46 simple_math.c | + | |
- | -rw-r--r-- 1 student student 198 Oct 9 21:46 constants.c | + | |
- | -rw-r--r-- 1 student student 204 Oct 9 21:46 floats.c | + | |
- | -rw-r--r-- 1 student student 121 Oct 9 21:46 main.c | + | |
- | -rw-r--r-- 1 student student 198 Oct 9 21:46 constants.c | + | |
- | [...] | + | |
- | </code> | + | |
- | Am afișat recursiv (''-R'') directorul ''~/uso.git/'' și am transmis rezultatul către utilitarul ''grep'' pentru a căuta fișierele cu extensia ''.c''. | ||
- | |||
- | **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 directorul ''~/uso.git/'' fișierele ce conțin cuvântul ''lab''. |