Differences

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

Link to this comparison view

uso:cursuri:curs-02 [2021/10/18 16:26]
ebru.resul
uso:cursuri:curs-02 [2024/02/26 11:42] (current)
sergiu.weisz
Line 1: Line 1:
-====== Curs 02 - Procese ​=======+====== Curs 02 - Utilizarea sistemului de fișiere ​=======
  
  
  
-  * [[https://drive.google.com/​file/d/18LepdiP4V2cBSQOyWZyvrVHAEm_lu8Ip/view?​usp=sharing| Slide-uri curs]] +  * [[https://docs.google.com/​presentation/d/1-8yjY74C3LZBDVXTxRhxEVZ8cjsfRKHk/edit?​usp=sharing&​ouid=108131427433094834232&​rtpof=true&​sd=true ​| Slide-uri curs]] 
-  * [[https://​drive.google.com/​file/​d/​1WnFIP81uNTMC6uxqp0NXOTe8zoirPKFn/​view?​usp=sharing| Handout 3on1 and notes space]] +  * **Cuvinte cheie**: ​fișier, director, nume, extensie, metadate, date''​stat'',​ date binare, date text, ASCII, bit, octet (//byte//), ''​file'',​ operații''​cat''​''​ls''​''​touch''​''​mkdir''​''​cp''​''​mv''​''​rm''​''​rmdir''​''​pwd''​''​cd'',​ ierarhie, director rădăcinăcaleseparatorcale relativă, cale absolută, ''​.''​ și ''​..'',​ operații recursive
-  * [[https://​drive.google.com/​file/​d/​1blGtQjHNIMWK-6fpIOGRV72A2rGyZXS1/​view?​usp=sharing | Handout 6on1]] +
-  * **Cuvinte cheie**: ​resurseinstrucțiuniatributepstopshelinitfgbgdescriptor de fișierekillkillallsemnaleinteracțiunidaemoni +
  
   * Suport de curs   * Suport de curs
     * [[https://​github.com/​systems-cs-pub-ro/​carte-uso/​releases | Utilizarea sistemelor de operare]]     * [[https://​github.com/​systems-cs-pub-ro/​carte-uso/​releases | Utilizarea sistemelor de operare]]
-        * Secțiunea ​Procese+        * Secțiunea ​Utilizarea sistemului de fisiere 
  
-/* 
 <​HTML>​ <​HTML>​
   <​center>​   <​center>​
-    ​<iframe src="​https://​docs.google.com/​viewer?​url=http:​//elf.cs.pub.ro/uso/​res/​cursuri/​curs-02/curs-02-handout.pdf&embedded=true" width="​600" height="​480" ​style="border: none;"> +  ​<iframe src="​https://​docs.google.com/​presentation/d/e/2PACX-1vSDcPLDY90lX6l0VzUGDnCr4fRbLgW1kpMVBgMQZah7LqiLdfHssIQirX0UoI6bfw/embed?​start=false&loop=false&​delayms=3000"​ frameborder="​0" width="​480" height="​389" ​allowfullscreen="true" mozallowfullscreen="​true"​ webkitallowfullscreen="​true"></​iframe> ​ 
-    ​</​iframe>​+
   </​center>​   </​center>​
 </​HTML>​ </​HTML>​
-*/+
  
 ====== Demo ======= ====== Demo =======
  
-==== Uptime ====+În acest demo, vom prezenta comenzile menționate în curs, alături de exemple și cazuri de utilizare ale acestora.
  
-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. 
  
-<​code>​ 
-student@uso:​~/​uso-lab$ uptime 
- ​13:​37:​20 up  1:34,  1 user,  load average: 0,05, 0,16, 0,10 
-</​code>​ 
  
-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-mod mai exact (specific)+==== Comanda ls ==== 
 + 
 +Ori de câte ori este necesar să aruncați ​privire asupra conținutului unui director din linia de comandă Linux, ''​ls''​ este comanda utilizată. Rezultatul comenzii este sortat în ordine alfabetică.
  
 <​code>​ <​code>​
-student@uso:​~/uso-labuptime -p +student@uso:​~$ ​ls 
-up 1 hour, 44 minutes +Desktop ​   Downloads ​ Pictures ​ Templates ​ snap     ​uso.git 
-student@uso:​~/​uso-lab$ uptime -s +Documents ​ Music      Public ​   Videos ​    uso-lab
-2020-10-14 12:02:26+
 </​code>​ </​code>​
  
-==== fg & bg ====+Observăm că dacă scriem simplu ''​ls'',​ se afișeaza fișierele și directoarele aflate în directorul în care mă aflu. Dacă dorim să vedem conținutul altui director, putem să oferim calea absolută sau calea relativă către acel director.
  
-Un proces poate fi oprit, sau poate rula fie în foreground fie în background. Dacă procesul rulează în foregroundacesta va acapara terminalul actual până când se va termina, spre deosebire de un proces ​care rulează în backgroundSe trece un proces din foreground în background oprind prima dată procesul folosind combinatia de taste Ctrl + Z, iar apoi tastând comanda bgUn proces ​poate fi adus din background ​în foreground folosind comanda fg+<​note>​ 
 +Calea absolută începe din directorul root (''/''​)iar cea relativă începe din directorul în care mă afluIntrarea ''​.''​ indică spre același director, iar ''​..''​ indică spre directorul părinte. 
 +</​note>​ 
 + 
 +Comanda ls poate afișa, de asemenea, informații detaliate despre ​fișiere și directoare. Pentru a activa acest format de ieșire, trebuie să utilizați opțiunea -l în linia de comandă.
  
 <​code>​ <​code>​
-student@uso:​~$ ​sleep 100 +student@uso:​~$ ​ls -l 
-^Z +total 44 
-[1]+  Stopped ​            ​ sleep 100 +drwxr-xr-x 2 student student 4096 aug 13 21:05 Desktop 
-student@uso:~$ jobs +drwxr-xr-x 3 student ​student 4096 aug 17 21:46 Documents 
-[1]+  Stopped ​            ​ sleep 100 +drwxr-xr-x 2 student student 4096 aug 17 22:21 Downloads 
-student@uso:~$ bg +drwxr-xr-x 2 student ​student 4096 aug 13 21:05 Music 
-[1]+ sleep 100 & +drwxr-xr-x 2 student student 4096 aug 13 21:05 Pictures 
-student@uso:~$ jobs +drwxr-xr-x 2 student ​student 4096 aug 13 21:05 Public 
-[1]+  Running ​            ​ sleep 100 & +drwxr-xr-x 2 student student 4096 aug 13 21:05 Templates 
-student@uso:~$ fg +drwxr-xr-x 2 student ​student 4096 aug 13 21:05 Videos 
-sleep 100+drwxr-xr-x 4 student student 4096 aug 18 22:06 snap 
 +drwxrwxr-x 6 student student 4096 sep 25 17:41 uso-lab 
 +drwxrwxr-x 6 student student 4096 aug 21 10:48 uso.git
 </​code>​ </​code>​
  
-<​note>​ Folosim utilitarul jobs pentru a vedea procesele pornite din terminalul actual ​și statusul lor.</​note>​+După cum puteți ​vedea mai sus, ieșirea este împărțită în 8 coloane: 
 +  * Prima coloană prezintă permisiunile de fișier 
 +  * Cea de-a doua coloană arată numărul de hard links 
 +  * A treia și a patra coloană reprezintă numele proprietarilor și ale grupurilor 
 +  * A cincea este dimensiunea fișierului 
 +  * A șasea și a șaptea sunt data și ora ultimei modificări 
 +  * Ultima coloana este numele fișierului.
  
-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 efectterminalul fiind acaparat de procesul sleep 100.+Comanda ls nu afișează în mod implicit fișierele ​și directoarele ascunse. Cu toate acestea, ​puteți forța instrumentul să facă acest lucru folosind opțiunea -a. Comparați fișierele și directoarele afișate atunci când rulăm ''​ls -a''​ vs ''​ls'',​ pentru a le identifica pe cele ascunde.
  
 <​code>​ <​code>​
-student@uso:​~$ ​fg +student@uso:​~$ ​ls -a 
-sleep 100 +.                   ​.local ​                           Documents 
-ls +..                  .mozilla ​                         Downloads 
-ps +.apport-ignore.xml ​ .profile ​                         Music 
-tree+.bash_aliases ​      ​.ssh ​                             Pictures 
 +.bash_history ​      ​.sudo_as_admin_successful ​        ​Public 
 +.bash_logout ​       .tmux                             ​Templates 
 +.bashrc ​            ​.tmux.conf ​                       Videos 
 +.cache ​             .vboxclient-display-svga-x11.pid ​ snap 
 +.config ​            ​.vim ​                             uso-lab 
 +.emacs ​             .viminfo ​                         uso.git 
 +.gitconfig ​         .vimrc 
 +.gnupg ​             Desktop
 </​code>​ </​code>​
  
-==== Semnale (Kill) ​====+==== Comanda pwd ====
  
-Comanda ​kill se folosește pentru ​da semnale proceselornu neapărat sa le omoare, cum sugerează numele ​comenzii. Pentru a vedea ce comenzi putem trimite proceselor se folosește comanda kill -l.+Comanda ​pwd tipărește calea absolută ​directorului de lucru curent (PWD - Print Working Directory)locația în care mă aflu în momentul rulării comenzii.
  
 <​code>​ <​code>​
-student@uso:​~$ ​kill -l +student@uso:​~$ ​pwd 
- 1) SIGHUP ​    2) SIGINT ​    3) SIGQUIT ​    4) SIGILL ​    5) SIGTRAP +/​home/​student
- 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+
 </​code>​ </​code>​
  
-<​note> ​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. </​note>​+<​note> ​ 
 +Putem folosi această comandă ​pentru a verifica faptul că am ajuns în locația dorită. 
 +</​note>​ 
 +==== Comanda cd ====
  
-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:+Puteți schimba cu ușurință directorul curent ​de lucru specificând noul director ca argument la comanda ​cd. În funcție ​de locul în care vă aflați ​și în ce director doriți să ajungeți, poate fi necesar ​să specificați calea absolută către acesta ​din urmă, împreună cu numele său. 
  
-<​code>​ +De exemplu, să presupunem că ne aflăm în directorul home și doresc să merg în Desktop (care se află de obicei în directorul home), atunci voi rula comanda următoareEste de ajuns să folosesc o cale relativă
-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 +
-</​code>​+
  
-Și observam ca în terminalul inițial apare “Killed”:​ 
 <​code>​ <​code>​
-student@uso:​~$ ​sleep 100 +student@uso:​~$ ​pwd 
-Killed +/​home/​student 
-student@uso:​~$+student@uso:​~$ ​cd Desktop/ 
 +student@uso:​~/​Desktop$  
 +student@uso:​~$ pwd 
 +/​home/​student/​Desktop
 </​code>​ </​code>​
  
-<​note>​Putem afla PID-ul procesului folosind, de asemenea, comanda pgrep sleep, obtinând PID-ul comenzii sleep, 24735.</​note>​ +Dacă totuși nu știu unde se află folderul în care doresc să ajung față de cel în care mă aflu sau poate doresc să scriu comanda la modul general ​pentru a o putea folosi indiferent de locația curentă, atunci pot sa folosesc calea absolută.
- +
-==== Redirectarea din fișier (< și >) ==== +
- +
-Pentru a redirecta dintr-un fișier pentru un anumit proces ​se folosește <, iar pentru redirectarea într-un fișier se va folosi ​ >. De exemplu, dacă avem următorul program scris în C, care doar afișează inputul, se poate redirecta continutul fisierului README.md ​pentru a-l avea ca input.+
  
 <​code>​ <​code>​
-#include <​stdio.h>​ +student@uso:​~/​Downloads$ pwd 
-int main() { +/​home/​student/​Downloads 
-»    char line[1000]; +student@uso:​~/​Downloads$ cd /​home/​student/​Desktop/​ 
-»   ​ while (fgets(line,​1000,​stdin)) { +student@uso:​~/​Desktop$ pwd 
-»   ​ » ​  ​ printf("​%s",​line);​ +/​home/​student/​Desktop
-»    } +
-»   ​ return 0; +
-}+
 </​code>​ </​code>​
  
-<code+<note
-student@uso:​~/​uso-lab$ ​./readfile < README.md +Pentru a verifica schimbarea directorului,​ folosim comanda ''​pwd''​
-# uso-lab +</note>
-Public repository for USO labs +
-</code>+
  
-Pentru a verifica faptul că acesta este chiar conținutul fișierului README.mdfolosim ​comanda ​cat.+Putem să ne mutăm rapid în directorul home, indiferent de locația curentă (sau actualul director de lucru)folosind semnul tildă (~) alături de comanda ​cd.
  
 <​code>​ <​code>​
-student@uso:​~/​uso-labcat README.md +student@uso:​~/​Desktop$ cd ~ 
-uso-lab +student@uso:~$  
-Public repository for USO labs +student@uso:~$ pwd 
-</​code> ​+/​home/​student 
 +</​code>​
  
-Pentru a redirecta outputul unui proces (comenzi) putem folosi numele comenzii, urmat de >, apoi de numele fișierului.+<note> 
 +Dacă doresc să mă întorc în directorul părinteatunci folosesc comanda ''​cd ​..''​ 
 +</​note>​
  
-<​code>​ +==== Comanda file ====
-student@uso:​~/​uso-lab$ ps > ps.txt +
-student@uso:​~/​uso-lab$ cat ps.txt +
-PID     ​TTY ​     TIME      CMD +
-24501 pts/​0 00:​00:​00 bash +
-25026 pts/​0 00:​00:​00 ​  ps +
-</​code> ​+
  
-Se poate, de asemenea, sa folosim atat redirectarea intrării, cât și cea ieșirii în aceeași comanda. De exemplu, dacă vrem sa redirecționăm continutul ​fișierului README.md la executabilul readfile prezentat mai sus și să redirecționăm output-ul în fișierul file.txt. Apoi putem verifica conținutul fișierului file.txt folosind comanda cat.+Comanda file este folosită pentru ​determina tipul unui fișier.
  
 <​code>​ <​code>​
-student@uso:​~/uso-lab./readfile < README.md >​file.txt +student@uso:​~$ ​file Music
-student@uso:​~/uso-lab$ cat file.txt +Music/: directory
-# uso-lab +
-Public repository for USO labs +
-student@uso:~/uso-lab$+
 </​code>​ </​code>​
  
-Se folosește >> pentru a redirecta output-ul într-un fișier și a î-l adăuga la finalul ​fișierului+<note 
 +Putem folosi această comandă ​pentru a verifica tipul fișierului
 +</​note>​ 
 +==== Comanda cat ====
  
-<​code>​ +Comanda ​cat vă permite să vizualizați conținutul unui fișier în ieșirea standard (stdout)Acest lucru se poate face în modul următor:
-student@uso:​~/​uso-lab$ ​cat file.txt +
-# uso-lab +
-Public repository for USO labs +
-student@uso:​~/​uso-lab$ echo "new content"​ >> file.txt +
-student@uso:​~/​uso-lab$ cat file.txt +
-# uso-lab +
-Public repository for USO labs +
-new content +
-</​code>​ +
- +
- +
-==== Înlănțuirea de comenzi ==== +
- +
- +
-Putem inlantui comenzi folosind ;, || sau &&.  +
-  *Pentru înlănțuire necondiționată se folosește “;”, dacă avem comanda x;y, mai intai se rulează x, apoi y +
-  *Dacă avem comanda x || y, se rulează x, iar în cazul în care aceasta comanda nu a fost finalizată cu succes se va rula y, însă dacă comanda x a fost rulata fără erori, y nu se va mai rula.  +
-  *Dacă avem x && y se vor rula ambele comenzi doar dacă comanda x nu a întâmpinat probleme la rulare.+
  
 <​code>​ <​code>​
-student@uso:​~/uso-lab$ echo "​a";​echo "​b"​ +student@uso:​~$ cat fisier.txt  
-+Curs uso
-+
-student@uso:​~/​uso-lab$ echo "​a"​ || echo "​b"​ +
-+
-student@uso:​~/​uso-lab$ echo "​a"​ && echo "​b"​ +
-+
-+
-student@uso:​~/​uso-lab$ cd file.txt || echo "nu e director"​ +
-bash: cd: file.txt: Not a directory +
-nu e director +
-student@uso:​~/​uso-lab$ cat file.txt && echo "​comanda cat a avut succes"​ +
-uso-lab +
-Public repository for USO labs +
-new content +
-comanda cat a avut succes +
-student@uso:​~/​uso-lab$+
 </​code>​ </​code>​
  
 +<​note> ​
 +Putem folosi această comanda pentru a verifica faptul că s-a salvat conținutul în fișier.
 +</​note>​
 +==== Comanda touch ====
  
-==== Pipe ==== +Comanda touch este folosită pentru ​schimba timpul când un fișier a fost accesat și modificat ultima dată. Este de asemenea ​folosită pentru ​a crea un fișier golComanda nu modifică ​conținutul fișierului. Deseori o folosim în scopul de crea un fișier gol.
- +
-Se poate redirecta output-ul unei comenzi în input-ul unei alte comenzi dând comanda a | b, unde output-ul comenzii ​va fi folosit ​ca input pentru ​comanda b. De exemplu, putem afisa continutul fisierului README.md ca sa fie utilizat de programul precedent (readfile), sau sa redirectionam ​conținutul fișierului ​/etc/passwd utilitarului grep pentru ​găsi secvența “student”:​+
  
 <​code>​ <​code>​
-student@uso:​~/uso-lab$ cat README.md | ./readfile +student@uso:​~$ ls 
-uso-lab +Desktop ​   Downloads ​ Pictures ​ Templates ​ snap     uso.git 
-Public repository for USO labs +Documents ​ Music      Public ​   Videos ​    uso-lab 
-student@uso:​~/uso-lab$ cat /etc/passwd | grep "​student"​ +student@uso:​~$ touch fisier.txt 
-student:​x:​1000:​1000:​student,,,:/​home/​student:/​bin/​bash+student@uso:​~$ ls 
 +Desktop ​   Downloads ​ Pictures ​ Templates ​ fisier.txt  ​uso-lab 
 +Documents ​ Music      Public ​   Videos ​    ​snap ​       uso.git
 </​code>​ </​code>​
  
 +<​note> ​
 +Pentru a verifica faptul că am creat fișierul, putem folosi comanda ''​ls''​.
 +</​note>​
 +==== Comanda rm ====
  
-==== ps ====+Comanda rm este folosită pentru a șterge un fișier. Pentru a face asta, este nevoie doar să oferim calea către fișierul respectiv. ​
  
-Folosim comanda ps pentru a afișa informații despre procesele active. +<​code>​  
-<​code>​ +student@uso:​~$ ​ls 
-student@uso:​~$ ​ps +Desktop ​   Downloads ​ Pictures ​ Templates ​ fisier.txt ​ uso-lab 
-    ​PID TTY          TIME CMD +Documents ​ Music      Public ​   Videos ​    ​snap ​       uso.git 
-   2975 pts/0    00:00:00 bash +student@uso:~$ rm fisier.txt  
-   3005 pts/0    00:00:00 ps+student@uso:~$ ls 
 +Desktop ​   Downloads ​ Pictures ​ Templates ​ snap     ​uso.git 
 +Documents ​ Music      Public ​   Videos ​    ​uso-lab
 </​code>​ </​code>​
-  *În prima coloană se află PID-ul procesului( process ID). FIecare PID este unic. 
-  *În a doua coloană se afla tipul terminalului în care utilizatorul este logat. 
-  *În a treia coloană se află timpul în care procesul rulează. 
-  *În a patra coloană se află comanda care pornește procesul. 
-Pentru o afișare mai detaliată a proceselor, trebuie să utilizați opțiunea –aux în linia de comandă. 
  
-<code+<note>  
-student@uso:​~$ ps -aux +Pentru a verifica faptul că am șters fișierul, putem folosi comanda ''​ls''​
-USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND +</note>
-root           ​1 ​ 0.2  0.3 103420 12860 ?        Ss   ​14:​03 ​  0:03 /sbin/init sp +
-root           ​2 ​ 0.0  0.0      0     0 ?        S    14:03   0:00 [kthreadd] +
-root           ​3 ​ 0.0  0.0      0     0 ?        I<   ​14:​03 ​  0:00 [rcu_gp] +
-root           ​4 ​ 0.0  0.0      0     0 ?        I<   ​14:​03 ​  0:00 [rcu_par_gp] +
-root           ​6 ​ 0.0  0.0      0     0 ?        I<   ​14:​03 ​  0:00 [kworker/​0:​0H +
-root           ​7 ​ 0.0  0.0      0     0 ?        I    14:03   0:00 [kworker/​u4:​0 +
-root           ​8 ​ 0.0  0.0      0     0 ?        I<   ​14:​03 ​  0:00 [mm_percpu_wq +
-root           ​9 ​ 0.0  0.0      0     0 ?        S    14:03   0:00 [ksoftirqd/​0] +
-root          10  0.0  0.0      0     0 ?        I    14:03   0:00 [rcu_sched] +
-root          11  0.0  0.0      0     0 ?        S    14:03   0:00 [migration/​0] +
-root          12  0.0  0.0      0     0 ?        S    14:03   0:00 [idle_inject/​ +
-root          14  0.0  0.0      0     0 ?        S    14:03   0:00 [cpuhp/0] +
-root          15  0.0  0.0      0     0 ?        S    14:03   0:00 [cpuhp/1] +
-root          16  0.0  0.0      0     0 ?        S    14:03   0:00 [idle_inject/​ +
-root          17  0.0  0.0      0     0 ?        S    14:03   0:00 [migration/​1] +
-root          18  0.0  0.0      0     0 ?        S    14:03   0:00 [ksoftirqd/​1] +
-root          19  0.0  0.0      0     0 ?        I    14:03   0:00 [kworker/​1:​0- +
-root          20  0.0  0.0      0     0 ?        I<   ​14:​03 ​  0:00 [kworker/​1:​0H +
-root          21  0.0  0.0      0     0 ?        S    14:03   0:00 [kdevtmpfs] +
-root          22  0.0  0.0      0     0 ?        I<   ​14:​03 ​  0:00 [netns] +
-root          23  0.0  0.0      0     0 ?        S    14:03   0:00 [rcu_tasks_kt +
-root          24  0.0  0.0      0     0 ?        S    14:03   0:00 [kauditd] +
-root          25  0.0  0.0      0     0 ?        S    14:03   0:00 [khungtaskd] +
-root          26  0.0  0.0      0     0 ?        S    14:03   0:00 [oom_reaper] +
-root          27  0.0  0.0      0     0 ?        I<   ​14:​03 ​  0:00 [writeback] +
-root          28  0.0  0.0      0     0 ?        S    14:03   0:00 [kcompactd0] +
-root          29  0.0  0.0      0     0 ?        SN   ​14:​03 ​  0:00 [ksmd] +
-root          30  0.0  0.0      0     0 ?        SN   ​14:​03 ​  0:00 [khugepaged] +
-root         ​123 ​ 0.0  0.0      0     0 ?        I<   ​14:​03 ​  0:00 [kintegrityd] +
-root         ​124 ​ 0.0  0.0      0     0 ?        I<   ​14:​03 ​  0:00 [kblockd] +
-</code>+
  
-  *-a = arată procesele tuturor utilizatorilor. +Dacă dorim să ștergem un director, atunci trebuie să utilizăm opțiunea -r în linia de comandă.
-  *-u = afișează utilizatorul care deține procesul. +
-  *-x = afișează și procesele ce nu aparțin terminalului.+
  
- 
- 
-==== pidof ==== 
- 
-Ca să găsiți PID-ul unui proces (cu numele specificat) activ folosiți comanda pidof. 
-<​code>​ 
-student@uso:​~$ ps 
-    PID TTY          TIME CMD 
-   2975 pts/0    00:00:00 bash 
-  23891 pts/0    00:00:00 ps 
-student@uso:​~$ pidof bash 
-2975 
-</​code>​ 
-<​note>​ Procesul init are întotdeauna PID-ul 1. </​note>​ 
 <​code>​ <​code>​
-student@uso:​~$ ​pidof init +student@uso:​~$ ​rm Music/ 
-+rm: cannot remove '​Music/':​ Is a directory 
 +student@uso:​~$ rm -r Music/ 
 +student@uso:​~$ ls 
 +Desktop ​   Downloads ​ Public ​    ​Videos ​ uso-lab 
 +Documents ​ Pictures ​  ​Templates ​ snap    uso.git
 </​code>​ </​code>​
  
 +==== Comanda rmdir ====
  
-==== pstree ====+Comanda rmdir este folosită pentru a șterge directoare. ATENȚIE! Directoarele trebuie să fie goale. Dacă nu sunt goale, atunci trebuie să le ștergem cu ''​rm -r'',​ pentru că rmdir nu va funcționa.
  
-Pentru că în Linux procesele au un proces părinte, uneori vrem să vizualizăm toate procesele într-o structură ierarhică. Pentru asta folosim comanda pstree. 
-Dacă folosim opțiunea –c pentru a afișa și PID-ul procesului. 
- 
-==== lsof ==== 
- 
-Această comandă ne ajută să aflăm informații despre fișierele deschise de fiecare proces din sistem. 
 <​code>​ <​code>​
-student@uso:​~$ ​lsof +student@uso:​~$ ​rmdir Music 
-gsd-usb-p ​ 2083                         student ​ ​mem ​      ​REG ​             252,5   ​157944 ​    ​533402 /​usr/​lib/​x86_64-linux-gnu/​libgdk_pixbuf-2.0.so.0.4000.0 +student@uso:~$ ls 
-gsd-usb-p ​ 2083                         ​student ​ mem       ​REG ​             252,5    64808     ​534307 /​usr/​lib/​x86_64-linux-gnu/​libwayland-client.so.0.3.0 +Desktop ​   Downloads ​ Public ​    ​Videos ​ uso-lab 
-gsd-usb-p ​ 2083                         ​student ​ mem       ​REG ​             252,5  2029224 ​    ​533090 /​usr/​lib/​x86_64-linux-gnu/​libc-2.31.so +Documents ​ Pictures ​  ​Templates ​ snap    uso.git
-gsd-usb-p ​ 2083                         ​student ​ mem       ​REG ​             252,5  1207920 ​    ​533430 /​usr/​lib/​x86_64-linux-gnu/​libglib-2.0.so.0.6400.3 +
-gsd-usb-p ​ 2083                         ​student ​ mem       ​REG ​             252,5   ​387448 ​    ​533460 /​usr/​lib/​x86_64-linux-gnu/​libgobject-2.0.so.0.6400.3 +
-gsd-usb-p ​ 2083                         ​student ​ mem       ​REG ​             252,5  1957200 ​    ​533420 /​usr/​lib/​x86_64-linux-gnu/​libgio-2.0.so.0.6400.3 +
-gsd-usb-p ​ 2083                         ​student ​ mem       ​REG ​             252,5    38984     ​533841 /​usr/​lib/​x86_64-linux-gnu/​libnotify.so.4.0.0+
 </​code>​ </​code>​
  
-==== pgrep ==== 
  
-pgrep este o comandă ce afișează anumite PID-uri bazate pe anumite criterii. +==== Comanda mkdir ====
-<​code>​ +
-student@uso:​~$ pgrep ssh +
-765 +
-1705 +
-</​code>​ +
-În exemplul de mai sus sunt afișate PID-urile proceselor care contin in nume ”ssh”. +
-Dacă vrem să afișăm doar PID-urile proceselor unui anumit utilizator folosim optiunea –u urmat de numele utilizatorului. +
-<​code>​ +
-student@uso:​~$ pgrep -u student +
-1505 +
-1507 +
-1518 +
-1520 +
-1524 +
-1528 +
-1530 +
-1533 +
-1539 +
-1546 +
-1560 +
-1570 +
-1574 +
-1579 +
-1583 +
-1587 +
-1602 +
-1612 +
-1705 +
-1722 +
-1729 +
-1730 +
-1733 +
-1735 +
-1738 +
-1758 +
-1763 +
-1771 +
-</​code>​+
  
 +Folosim această comandă pentru a crea un director gol.
  
-==== top & htop ==== 
- 
-Pentru a avea o vizualizare în timp real a sistemului nostru putem folosi comanda top. Aceasta oferă informații despre procesele care rulează în sistem(PID, utilizator, procentul de memorie folosită etc.) 
- 
-Htop este o comandă ce oferă o vizualizare interactivă a resurselor vitale ale sistemului. Față de comanda top este mai nouă și oferă îmbunătățiri. Un exemplu este că poți scroll atât pe verticală cât și pe orizontală,​ pentru a putea vedea toate procesele ce rulează în sistem împreună cu toate specificatiile lor. 
- 
- 
-Ptrace este un apel către sistemul de operare folosit pentru investigarea amănunțită a proceselor și este folosit în cadrul utilitarelor pentru debug (cum este utilitarul gdb) sau în cadrul tool-urilor strace și ltrace. 
- 
-Comanda strace monitorizează apelurile pe care le face o altă comandă către sistemul de operare (strace – system call tracing). Pentru început, pornim de la un program simplu scris în C care afișează șirul de caractere "Hello World" la ieșirea standard. 
 <​code>​ <​code>​
-hello_world.c +student@uso:​~$ ls 
-#include <stdio.h> +Desktop ​   Downloads ​ Public ​    ​Videos ​ uso-lab 
- +Documents ​ Pictures ​  ​Templates ​ snap    uso.git 
-int main() { +student@uso:​~$ mkdir FolderNou 
-        ​printf("​Hello World\n"​);​ +student@uso:​~$ ls 
-        return 0; +Desktop ​   Downloads ​ Pictures ​ Templates ​ snap     ​uso.git 
-}+Documents ​ FolderNou ​ Public ​   Videos ​    ​uso-lab
 </​code>​ </​code>​
  
-Pentru compilarea programului vom lansa comanda: +<notePentru a verifica faptul ​că am creat directorul, putem folosi comanda ''​ls'' ​</note>
-<code> +
-student@uso:​~/​uso-lab$ gcc hello_world.-o hello_world +
-</code>+
  
-În urma rulării executabilului,​ obținem următorul rezultat: 
-<​code>​ 
-student@uso:​~/​uso-lab$ ./​hello_world 
-Hello World 
-</​code>​ 
- 
-Dacă dorim să vedem apelurile către sistemul de operare efectuate de programul hello_world,​ putem folosi următoarea comandă: 
-<​code>​ 
-student@uso:​~/​uso-lab$ strace ./​hello_world 
-execve("​./​hello_world",​ ["​./​hello_world"​],​ 0x7fffe3d9b840 /* 21 vars */) = 0 
-brk(NULL) ​                              = 0x7fffc4eec000 
-access("/​etc/​ld.so.nohwcap",​ F_OK)      = -1 ENOENT (No such file or directory) 
-access("/​etc/​ld.so.preload",​ R_OK)      = -1 ENOENT (No such file or directory) 
-openat(AT_FDCWD,​ "/​etc/​ld.so.cache",​ O_RDONLY|O_CLOEXEC) = 3 
-[...] 
-write(1, "Hello World\n",​ 12Hello World 
-)            
-[...] 
-</​code>​ 
- 
-Un alt utilitar înrudit cu strace este ltrace. Acesta urmăreşte apelurile de bibliotecă. În cazul programului hello_world,​ rezultatul este următorul: 
-<​code>​ 
-$ ltrace ./​hello_world 
-puts("​Hello World"​Hello World 
-)                                              ​ 
-</​code>​ 
  
  
  
 +<​note>​
 +Pentru a afla mai multe detalii despre cum funcționeaza o comandă și pentru a putea vizualiza opțiunile acestora, puteți să folosiți comanda ''​man''​ alături de numele comenzii: ''​man ls''​
 +</​note>​
uso/cursuri/curs-02.1634563571.txt.gz · Last modified: 2021/10/18 16:26 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