This is an old revision of the document!
Pentru această secțiune trebuie să vă asigurați că sunteți în directorul potrivit. Rulați comanda
cd ~/uso.git/labs/02-process/support/
Vom folosi ca exemplu programul bg-proc.sh
. Acesta afișează în fiecare secundă, alternativ, câte un mesaj Tick! sau Tock!. Pornim programul:
student@uso:~/uso.git/labs/02-process/support$ ./bg-proc.sh Tick! Tock! Tick! ^C
L-am terminat folosind combinația de taste Ctrl+C.
Îl pornim din nou și de data asta îl oprim folosind combinația de taste Ctrl+Z, ca mai jos.
student@uso:~/uso.git/labs/02-process/support$ ./bg-proc.sh Tick! Tock! Tick! ^Z [1]+ Stopped ./bg-proc.sh
Apare mesajul Stopped
.
Verficăm dacă procesul încă există în sistem:
student@uso:~/uso.git/labs/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:
student@uso:~/uso.git/labs/02-process/support$ ./bg-proc.sh Tick! Tock! [1]+ Stopped ./bg-proc.sh student@uso:~/uso.git/labs/02-process/support$ bg [1]+ ./bg-proc.sh & student@uso:~/uso.git/labs/02-process/support$ Tick! Tock! lsTick! batman.sh bg-proc.sh it-s-a-trap.sh student@uso:~/uso.git/labs/02-process/support$ Tock! Tick! Tock! ^C student@uso:~/uso.git/labs/02-process/support$ Tick! Tock!
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
.
Exerciții
bg-proc.sh
în background.kill
.it-s-a-trap.sh
.Pentru a redirecta lista proceselor într-un fișier, folosim următoarea comandă:
student@uso:~/uso.git/labs/02-process/support$ ps aux > procese.txt
Un alt exemplu de redirectare este:
student@uso:~/uso.git/labs/02-process/support$ echo "prima linie din fisier" > fis.txt student@uso:~/uso.git/labs/02-process/support$ cat fis.txt prima linie din fisier student@uso:~/uso.git/labs/02-process/support$ echo "a2a linie din fisier" >> fis.txt student@uso:~/uso.git/labs/02-process/support$ cat fis.txt prima linie din fisier a2a linie din fisier student@uso:~/uso.git/labs/02-process/support$ echo "a3a linie din fisier" > fis.txt student@uso:~/uso.git/labs/02-process/support$ cat fis.txt a3a linie din fisier
Putem observa că la a3a comandă echo
am folosit > în loc de » și am șters conținutul anterior al fișierului.
Putem căuta după un anumit proces din sistem astfel:
student@uso:~/uso.git/labs/02-process/support$ 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
.
În exemplul de mai jos
student@uso:~/uso.git/labs/02-process/support$ ls -lR ~/uso.git/ | egrep '*\.c' -rw-r--r-- 1 student student 72 Oct 9 21:46 hello.c -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 [...]
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
~/uso.git/
, redirectând totul într-un fișier. Înspectați fișierul pentru verificare.grep
pentru a căuta în directorul ~/uso.git/
fișierele ce conțin cuvântul lab
.