This is an old revision of the document!


Curs 02 - Procese

Demo

Uptime

Comanda uptime se folosește dacă dorim să aflăm de cât timp este aprins (rulează) sistemul. Se afișează timpul curent, starea sistemului (up), timpul de cat timp rulează, numărul de utilizatori logați pe sistem și media încărcăturii în ultimele 1, 5 si 15 minute.

student@uso:~/uso-lab$ uptime
 13:37:20 up  1:34,  1 user,  load average: 0,05, 0,16, 0,10

Se poate folosi tagul -p pentru un format mai frumos, mai lizibil (pretty), tagul -s pentru a vedea ora de cand este pornit sistemul într-o mod mai exact (specific)

student@uso:~/uso-lab$ uptime -p
up 1 hour, 44 minutes
student@uso:~/uso-lab$ uptime -s
2020-10-14 12:02:26

fg & bg

Un proces poate fi oprit, sau poate rula fie în foreground fie în background. Dacă procesul rulează în foreground, acesta va acapara terminalul actual până când se va termina, spre deosebire de un proces care rulează în background. Se trece un proces din foreground în background oprind prima dată procesul folosind combinatia de taste Ctrl + Z, iar apoi tastând comanda bg. Un proces poate fi adus din background în foreground folosind comanda fg.

student@uso:~$ sleep 100
^Z
[1]+  Stopped             	sleep 100
student@uso:~$ jobs
[1]+  Stopped             	sleep 100
student@uso:~$ bg
[1]+ sleep 100 &
student@uso:~$ jobs
[1]+  Running             	sleep 100 &
student@uso:~$ fg
sleep 100

Folosim utilitarul jobs pentru a vedea procesele pornite din terminalul actual și statusul lor.

Pentru a verifica faptul că procesul din primul terminal (sleep 100) rulează în foreground, putem da diferite comenzi, precum ls, și observam ca acestea nu au niciun efect, terminalul fiind acaparat de procesul sleep 100.

student@uso:~$ fg
sleep 100
ls
ps
tree

Semnale (Kill)

Comanda kill se folosește pentru a da semnale proceselor, nu neapărat sa le omoare, cum sugerează numele comenzii. Pentru a vedea ce comenzi putem trimite proceselor se folosește comanda kill -l.

student@uso:~$ kill -l
 1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
 6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX

Cel mai puternic semnal pentru a termina un proces este SIGKILL, transmis prin comanda kill -9, urmat de PID-ul procesului pe care îl vom termina.

Dacă vrem sa terminăm un proces dintr-un terminal care este acaparat de acesta, aflăm PID-ul procesului din alt terminal folosind comanda ps aux urmată de comanda kill -9 și PID-ul aflat la pasul anterior. De exemplu, dacă dorim să terminăm procesul sleep 100 din primul terminal, în al doilea vom avea următoarele comenzi:

student@uso:~$ ps aux
USER       PID  %CPU  %MEM	VSZ      RSS   TTY  	STAT START   TIME COMMAND
root             1       0.0         0.3         168976   12980    ?       	  Ss     12:01     0:03  /sbin/init sp
root             2       0.0         0.0               0 	    0         ?    	   S	12:01    0:00  [kthreadd]
root             3       0.0         0.0  	   0 	    0         ?    	   I<     12:01   	 0:00  [rcu_gp]
root             4       0.0         0.0  	   0 	    0         ?    	   I<      12:01    0:00 [rcu_par_gp]
[...]
root   	    24687  0.0        0.0  	   0           0         ?    	   I	13:32   0:00 [kworker/1:0-
root          24717  0.0        0.0  	   0 	    0         ?    	   I	13:37  	0:00  [kworker/0:1-
student    24735  0.0        0.0  	19572    592     pts/0	  S+     13:43   0:00  sleep 100
student    24736  0.0        0.0  	22972   3608    pts/1 	  R+     13:43   0:00  ps aux
student@uso:~$ kill -9 24735

Și observam ca în terminalul inițial apare “Killed”:

student@uso:~$ sleep 100
Killed
student@uso:~$

Putem afla PID-ul procesului folosind, de asemenea, comanda pgrep sleep, obtinând PID-ul comenzii sleep, 24735.

uso/cursuri/curs-02.1603122723.txt.gz · Last modified: 2020/10/19 18:52 by ebru.resul
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