This shows you the differences between two versions of the page.
uso:laboratoare:new:05-cli:need-to-know [2018/10/30 09:46] liza_elena.babu |
uso:laboratoare:new:05-cli:need-to-know [2020/11/10 21:53] (current) liza_elena.babu [Filtre de procesare] |
||
---|---|---|---|
Line 6: | Line 6: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ fdisk -l | + | student@uso:~/uso-lab$ fdisk -l |
fdisk: cannot open /dev/loop0: Permission denied | fdisk: cannot open /dev/loop0: Permission denied | ||
fdisk: cannot open /dev/loop1: Permission denied | fdisk: cannot open /dev/loop1: Permission denied | ||
Line 29: | Line 29: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ sudo !! | + | student@uso:~/uso-lab$ sudo !! |
sudo fdisk -l | sudo fdisk -l | ||
[sudo] password for student: | [sudo] password for student: | ||
Line 56: | Line 56: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ x=4 | + | student@uso:~/uso-lab$ x=4 |
- | student@uso:~/uso.git/$ echo $x | + | student@uso:~/uso-lab$ echo $x |
4 | 4 | ||
</code> | </code> | ||
Line 65: | Line 65: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ echo $x | + | student@uso:~/uso-lab$ echo $x |
- | student@uso:~/uso.git/$ | + | student@uso:~/uso-lab$ |
</code> | </code> | ||
Line 74: | Line 74: | ||
</note> | </note> | ||
- | Vom crea acum un scipt care să folosească variabila ''x''. Urmăriți pașii de mai jos pentru a realiza acest | + | Vom crea acum un script care să folosească variabila ''x''. Urmăriți pașii de mai jos pentru a realiza acest |
lucru. Creați un script cu numele ''script.sh'' care să conțină următoarele linii: | lucru. Creați un script cu numele ''script.sh'' care să conțină următoarele linii: | ||
Line 84: | Line 84: | ||
Acest script afișează valoarea variabilei ''x'' definită mai devreme. Dați drept de execuție pentru | Acest script afișează valoarea variabilei ''x'' definită mai devreme. Dați drept de execuție pentru | ||
- | acest script folosind comanda ''chmod'' și asigurați-vă că aveți drept să îl rulați. Pentru a rula | + | acest script folosind comanda ''chmod'' și asigurați-vă că aveți drept să îl rulați. Pentru a rula un |
script folosim comanda ''./script.sh''. | script folosim comanda ''./script.sh''. | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ ./script.sh | + | student@uso:~/uso-lab$ ./script.sh |
- | student@uso:~/uso.git/$ | + | student@uso:~/uso-lab$ |
</code> | </code> | ||
Observăm că deși variabila ''x'' este definită din acest terminal, la rulare nu obținem nicio valoare. Acest | Observăm că deși variabila ''x'' este definită din acest terminal, la rulare nu obținem nicio valoare. Acest | ||
- | lucru nu se întâmplă deoarece variabila ''x'', așa cum a fost deinită, nu este vizibilă subproceselor pornite | + | lucru nu se întâmplă deoarece variabila ''x'', așa cum a fost definită, nu este vizibilă subproceselor pornite |
din cadrul acestui terminal. Pentru a face acest lucru posibil, trebuie să o exportăm. | din cadrul acestui terminal. Pentru a face acest lucru posibil, trebuie să o exportăm. | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ export x=4 | + | student@uso:~/uso-lab$ export x=4 |
</code> | </code> | ||
Line 104: | Line 104: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ ./script.sh | + | student@uso:~/uso-lab$ ./script.sh |
4 | 4 | ||
</code> | </code> | ||
- | === Redirectarea datelor de intrare, ieșire și erorile === | + | ==== Redirectarea datelor de intrare, ieșire și erorile ==== |
- | Pentru a urmări acest tutorial, mutați-vă în directorul ''~/uso.git/labs/05-cli/support/need-to-know''. | + | Pentru a urmări acest tutorial, mutați-vă în directorul ''~/uso-lab/05-cli/support/need-to-know''. |
Listăm conținutul directorul și observăm că avem un program C și un Makefile. Compilăm programul | Listăm conținutul directorul și observăm că avem un program C și un Makefile. Compilăm programul | ||
folosind comanda ''make''. Folosiți comanda ''make run'' pentru a rula program și introduceți inputul | folosind comanda ''make''. Folosiți comanda ''make run'' pentru a rula program și introduceți inputul | ||
Line 125: | Line 125: | ||
</code> | </code> | ||
- | Încercați să introduceți și date care nu se potrivesc cerințelor. Programul va produce erori care ne deranjează | + | Încercați să introduceți și date care nu se potrivesc cerințelor. Programul va produce erori care ne deranjează și |
pe care vrem să le separăm de datele de ieșire standard. Pentru a face acest lucru putem redirecta erorile | pe care vrem să le separăm de datele de ieșire standard. Pentru a face acest lucru putem redirecta erorile | ||
- | într-un fișier. Rulați comanda ''make run_redirect_err'' care va redireca eventualele erori apărute în | + | într-un fișier. Rulați comanda ''make run_redirect_err'' care va redirecta eventualele erori apărute în |
fișierul ''err.txt''. | fișierul ''err.txt''. | ||
Line 137: | Line 137: | ||
<note> | <note> | ||
- | Uzual, erorile sunt redirectare erorile către fișierul special ''/dev/null''. | + | Uzual, erorile sunt redirectate către fișierul special ''/dev/null''. |
</note> | </note> | ||
- | 1. Adăugați o regulă în fișierul ''Makefile'' care să ruleze același program și să redirecteze atât | + | - Adăugați o regulă în fișierul ''Makefile'' care să ruleze același program și să redirecteze atât intrările, cât și erorile, într-o singură comandă. Pentru intrări, creați un fișier numit ''input.txt'' care să conțină informațiile pe care le cere programul. Folosiți operatorul ''<''. Pentru erori, redirectați în fișierul ''errors.txt''. Observați că pentru a redirecta ieșirile sau erorile, fișierul va fi creat automat. |
- | intrările, cât și erorile. Pentru a face acest lucru, creați un fisier numit ''input.txt'' care să | + | |
- | conțină informațiile pe care le cere programul. Folosiți operatorul ''<''. | + | |
- | === Comunicare interprocese === | + | ==== Comunicare interprocese ==== |
Mai devreme am văzut cum putem redirecta intrarea standard astfel încât programul să preia dintr-un | Mai devreme am văzut cum putem redirecta intrarea standard astfel încât programul să preia dintr-un | ||
Line 157: | Line 155: | ||
Diferența dintre cele 2 exemple de mai sus o face numărul de procese create. În cazul redirectării, | Diferența dintre cele 2 exemple de mai sus o face numărul de procese create. În cazul redirectării, | ||
- | este creat un singur proces, pe când în cel de-al doilea sunt create procese, primul pornit de comanda | + | este creat un singur proces, pe când în cel de-al doilea sunt create două procese, primul pornit de comanda |
- | ''cat input.txt'' și ''./out'' care se ocupă de rularea binarului. Este de reținut faptul că **ieșirea** | + | ''cat input.txt'' și al doilea de ''./out'' care se ocupă de rularea binarului. Este de reținut faptul că **ieșirea** |
- | primului proces este servită drept **intrare** pentru ce de-al doilea. | + | primului proces este servită drept **intrare** pentru cel de-al doilea. |
- | === Filtre de procesare === | + | ==== Filtre de procesare ==== |
Să ne amintim de fișierul ''/etc/passwd'' conține informații despre toți utilizatorii din sistem. | Să ne amintim de fișierul ''/etc/passwd'' conține informații despre toți utilizatorii din sistem. | ||
<code bash> | <code bash> | ||
- | student@uso:~/.../05-cli/support/need-to-know$ cd ~/uso.git/ | + | student@uso:~$ cat /etc/passwd |
- | student@uso:~/uso.git/$ cat /etc/passwd | + | |
root:x:0:0:root:/root:/bin/bash | root:x:0:0:root:/root:/bin/bash | ||
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin | daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin | ||
bin:x:2:2:bin:/bin:/usr/sbin/nologin | bin:x:2:2:bin:/bin:/usr/sbin/nologin | ||
- | sys:x:3:3:sys:/dev:/usr/sbin/nologin | + | (...) |
- | sync:x:4:65534:sync:/bin:/bin/sync | + | |
- | games:x:5:60:games:/usr/games:/usr/sbin/nologin | + | |
- | man:x:6:12:man:/var/cache/man:/usr/sbin/nologin | + | |
- | lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin | + | |
- | mail:x:8:8:mail:/var/mail:/usr/sbin/nologin | + | |
- | news:x:9:9:news:/var/spool/news:/usr/sbin/nologin | + | |
- | uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin | + | |
- | proxy:x:13:13:proxy:/bin:/usr/sbin/nologin | + | |
- | www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin | + | |
- | backup:x:34:34:backup:/var/backups:/usr/sbin/nologin | + | |
- | list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin | + | |
- | irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin | + | |
- | gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin | + | |
- | nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin | + | |
- | systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin | + | |
- | systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin | + | |
- | syslog:x:102:106::/home/syslog:/usr/sbin/nologin | + | |
- | messagebus:x:103:107::/nonexistent:/usr/sbin/nologin | + | |
- | _apt:x:104:65534::/nonexistent:/usr/sbin/nologin | + | |
- | uuidd:x:105:111::/run/uuidd:/usr/sbin/nologin | + | |
- | avahi-autoipd:x:106:112:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin | + | |
- | usbmux:x:107:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin | + | |
- | dnsmasq:x:108:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin | + | |
- | rtkit:x:109:114:RealtimeKit,,,:/proc:/usr/sbin/nologin | + | |
- | cups-pk-helper:x:110:116:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin | + | |
- | speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false | + | |
- | whoopsie:x:112:117::/nonexistent:/bin/false | + | |
- | kernoops:x:113:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin | + | |
- | saned:x:114:119::/var/lib/saned:/usr/sbin/nologin | + | |
- | pulse:x:115:120:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin | + | |
- | avahi:x:116:122:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin | + | |
- | colord:x:117:123:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin | + | |
- | hplip:x:118:7:HPLIP system user,,,:/var/run/hplip:/bin/false | + | |
- | geoclue:x:119:124::/var/lib/geoclue:/usr/sbin/nologin | + | |
- | gnome-initial-setup:x:120:65534::/run/gnome-initial-setup/:/bin/false | + | |
- | gdm:x:121:125:Gnome Display Manager:/var/lib/gdm3:/bin/false | + | |
- | student:x:1000:1000:Student User,,,:/home/student:/bin/bash | + | |
- | vboxadd:x:999:1::/var/run/vboxadd:/bin/false | + | |
- | sshd:x:122:65534::/run/sshd:/usr/sbin/nologin | + | |
- | festival:x:123:29::/nonexistent:/usr/sbin/nologin | + | |
- | test:x:1001:1001::/home/test:/bin/sh | + | |
- | test2:x:1002:1002:,,,:/home/test2:/bin/bash | + | |
</code> | </code> | ||
Line 221: | Line 176: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ cat /etc/passwd | cut -f1 -d: | + | student@uso:~/uso-lab$ cat /etc/passwd | cut -f1 -d":" |
root | root | ||
daemon | daemon | ||
bin | bin | ||
- | sys | + | (...) |
- | sync | + | |
- | games | + | |
- | man | + | |
- | lp | + | |
- | + | ||
- | news | + | |
- | uucp | + | |
- | proxy | + | |
- | www-data | + | |
- | backup | + | |
- | list | + | |
- | irc | + | |
- | gnats | + | |
- | nobody | + | |
- | systemd-network | + | |
- | systemd-resolve | + | |
- | syslog | + | |
- | messagebus | + | |
- | _apt | + | |
- | uuidd | + | |
- | avahi-autoipd | + | |
- | usbmux | + | |
- | dnsmasq | + | |
- | rtkit | + | |
- | cups-pk-helper | + | |
- | speech-dispatcher | + | |
- | whoopsie | + | |
- | kernoops | + | |
- | saned | + | |
- | pulse | + | |
- | avahi | + | |
- | colord | + | |
- | hplip | + | |
- | geoclue | + | |
- | gnome-initial-setup | + | |
- | gdm | + | |
- | student | + | |
- | vboxadd | + | |
- | sshd | + | |
- | festival | + | |
- | test | + | |
- | test2 | + | |
</code> | </code> | ||
Line 275: | Line 188: | ||
</note> | </note> | ||
- | 1. Pornind de la comanda de mai sus, afișați numele utilizatorilor sortați alfabetic. (Hint: ''man sort'') | + | - Pornind de la comanda de mai sus, afișați numele utilizatorilor sortați alfabetic. (Hint: ''man sort'') |
- | 2. Folosind utilitarul ''wc'', obțineți numărul de utilizatori din sistem. | + | - Folosind utilitarul ''wc'', obțineți numărul de utilizatori din sistem. |
- | 3. Să afișeze cele mai consumatoare de memorie 10 procese din sistem. (Hint: folosiți ''|'' și ''tail''). | + | - Să afișeze cele mai consumatoare de memorie 10 procese din sistem. (Hint: folosiți ''|'' și ''tail''). |
Comanda ''stat'' ne afișează mai multe informații despre un fișier din sistem. Vrem să extragem din outputul | Comanda ''stat'' ne afișează mai multe informații despre un fișier din sistem. Vrem să extragem din outputul | ||
Line 284: | Line 197: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ cd ~/uso.git/labs/05-cli/support/need-to-know | + | student@uso:~/uso-lab$ cd ~/uso-lab/05-cli/support/need-to-know |
student@uso:~/.../05-cli/support/need-to-know$ stat Makefile | grep "Modify" | student@uso:~/.../05-cli/support/need-to-know$ stat Makefile | grep "Modify" | ||
Modify: 2018-10-29 23:40:49.942659138 +0200 | Modify: 2018-10-29 23:40:49.942659138 +0200 | ||
</code> | </code> | ||
- | 1. Folosind filtrul ''cut'' extrageți din ieșirea comenzii anterioare doar data modificării. | + | - Folosind filtrul ''cut'' extrageți din ieșirea comenzii anterioare doar data modificării. |
Fișierul special ''/dev/urandom'' conține bytes aleatori. Listați conținutul acestui fișier. Folosiți | Fișierul special ''/dev/urandom'' conține bytes aleatori. Listați conținutul acestui fișier. Folosiți | ||
Line 295: | Line 208: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ cat /dev/urandom | + | student@uso:~/uso-lab$ cat /dev/urandom |
(...) | (...) | ||
^C | ^C | ||
- | student@uso:~/uso.git/$ | + | student@uso:~/uso-lab$ |
</code> | </code> | ||
- | 1. Folosindu-vă de fișierul ''/dev/random'', generați o parolă aleatoare de 32 de caractere. Vă | + | - Folosindu-vă de fișierul ''/dev/random'', generați o parolă aleatoare de 32 de caractere. Vă puteți inspira de [[https://www.howtogeek.com/howto/30184/10-ways-to-generate-a-random-password-from-the-command-line/|aici]]. |
- | puteți inspira de | + | |
- | [[https://www.howtogeek.com/howto/30184/10-ways-to-generate-a-random-password-from-the-command-line/|aici]]. | + | |
- | === Înlănțuirea comenzilor === | + | ==== Înlănțuirea comenzilor ==== |
- | Pentru a înlănțui 2 sau mai multe comenzi folosim operatorul '';''. Cele de procese pornite sunt | + | Pentru a înlănțui 2 sau mai multe comenzi folosim operatorul '';''. Cele două procese pornite sunt |
independente și se vor executa indiferent de finalitatea celei care se execută prima. | independente și se vor executa indiferent de finalitatea celei care se execută prima. | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ cd ~/uso/labs/05-cli/support/need-to-know; ls -l | + | student@uso:~/uso-lab$ cd ~/uso-lab/05-cli/support/need-to-know; ls -l |
total 8 | total 8 | ||
-rw-rw-r-- 1 student student 122 Oct 29 23:40 Makefile | -rw-rw-r-- 1 student student 122 Oct 29 23:40 Makefile | ||
Line 319: | Line 230: | ||
</code> | </code> | ||
- | 1. Alegeți 2 aplicații de [[https://www.binarytides.com/linux-fun-commands/|aici]] și instalați-le | + | - Alegeți 2 aplicații de [[https://www.binarytides.com/linux-fun-commands/|aici]] și instalați-le folosind o singură comandă. |
- | folosind o singură comandă. | + | |
În continuare, vom folosi comanda ''ping www.google.com'' pentru a testa dacă avem conectivitate la | În continuare, vom folosi comanda ''ping www.google.com'' pentru a testa dacă avem conectivitate la | ||
Line 327: | Line 237: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ ping -c 1 www.google.com && firefox www.google.com | + | student@uso:~/uso-lab$ ping -c 1 www.google.com && firefox www.google.com |
</code> | </code> | ||
Acum încercați să înlocuiți ''www.google.com'' cu ''www.random-webiste.xyz'' și ''&&'' cu ''||''. | Acum încercați să înlocuiți ''www.google.com'' cu ''www.random-webiste.xyz'' și ''&&'' cu ''||''. | ||
- | Oservați ce se întâmplă. | + | Observați ce se întâmplă. |
- | 1. Mutați-vă la calea ''~/uso.git/labs/05-cli/support/need-to-know/err-file'' și, folosind o singură | + | - Mutați-vă la calea ''~/uso-lab/05-cli/support/need-to-know/err-file'' și, folosind o singură comandă, compilați și rulați programul ''simple_pow.c''. În cazul în care apar erori de compilare, vrem să nu rulăm executabilul. Rezolvați eroarea astfel încât programul să compileze cu succes și rulați-l. (Hint: ce bibliotecă folosește programul ''simple_pow.c''?) |
- | comandă, compilați și rulați programul ''simple_pow.c''. În cazul în care apar erori de compilare, | + | |
- | vrem să nu rulăm executabilul. Rezolvați eroarea astfel încât programul să compileze cu succes și | + | |
- | rulați-l. (Hint: ce bibliotecă folosește programul ''simple_pow.c''?) | + |