User Tools

Site Tools


linux-admin:capitole:capitol-07

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
linux-admin:capitole:capitol-07 [2016/09/29 09:47]
mihaic
linux-admin:capitole:capitol-07 [2016/10/03 09:18] (current)
mihaic [Exercițiu 2]
Line 1: Line 1:
 ====== 7. Redirectări ====== ====== 7. Redirectări ======
  
-Redirectarile sunt principalul mijloc prin care stocam pe disc, in fisiere, ​precularile ​de date facute de scripturi.+Redirectarile sunt principalul mijloc prin care stocam pe disc, in fisiere, ​prelucrarile ​de date facute de scripturi ​si programe.
  
 ===== Subiecte abordate ===== ===== Subiecte abordate =====
Line 20: Line 20:
 ==== Demo-uri ==== ==== Demo-uri ====
  
 +=== Lucrul cu redirectari ===
 Redirectare ''​stdout''​ (standard output, în general mesaje afișate prin comenzi similare cu ''​printf''​ din C). De exemplu, într-un sistem în care avem multe procese, e greu sa urmărim direct în consolă output-ul comenzii ''​ps'':​ Redirectare ''​stdout''​ (standard output, în general mesaje afișate prin comenzi similare cu ''​printf''​ din C). De exemplu, într-un sistem în care avem multe procese, e greu sa urmărim direct în consolă output-ul comenzii ''​ps'':​
  
Line 74: Line 75:
 </​note>​ </​note>​
  
 +=== Investigarea redirectărilor === 
 +
 +Putem folosi ''​lsof''​ pentru a verifica modul în care redirectarea afectează descriptorii unui proces.
 +
 +Într-un tab de terminal porniți un proces ''​sleep''​ folosind comanda: ''​sleep 100''​.
 +
 +În alt tab, pentru a investiga descriptorii procesului sleep folosim comanda ''​lsof -p $(pidof sleep)''​.
 +
 +Observăm că descriptorii standard referă terminalul în care a fost rulată comanda, moșteniți de la terminalul din shell-ul folosit.
 +
 +Acum să invesigăm procesul sleep cu redictări în diverse fișiere. Folosiți comanda ''​sleep 100 < /dev/zero > /dev/null 2> error.txt''​
 +
 +Folosim comanda lsof anterioară pentru a investiga descriptorii procesului sleep. Putem observa unde pointează descriptorii standard de fișier pentru procesul pornit.
  
 ==== Exercițiu 1 ==== ==== Exercițiu 1 ====
Line 87: Line 101:
 ==== Exercițiu 2 ==== ==== Exercițiu 2 ====
  
 +Schimbați directorul curent în directorul /​home/​training. Folosiți comanda ''​echo''​ pentru a afișa pe ecran textul ''​al doilea exercițiu''​. Redirectați acest text într-un fișier numit ''​ex2.txt''​.
  
 +Folosiți comanda echo pentru a adăuga textul ''​e mai lung decat primul''​ în fișierul ''​ex2.txt'',​ fără a șterge conținutul său.
  
 +Scriind comanda gcc fără niciun parametru, veți primi un mesaj de eroare. Redirectați acest mesaj de eroare folosind un operator de redirectare într-un fişier numit ''​gcc_error.txt''​. Afișați conținutul fișierului pentru a confirma.
 +
 +Redirectați ieșirea standard a comenzii ''​strace -e open ls /​lib''​ în fișierul ''​strace.out''​.
 +
 +Redirectați ieșirea de eroare standard a comenzii ''​strace -e open ls /​lib''​ în fișierul ''​strace.err''​.
 +
 +Redirectați atât ieșirea standard cât și ieșirea de eroare standard a comenzii ''​strace -e open ls /​lib''​ în fișierul ''​strace.both''​.
 +
 +Filtrați (folosind ''​grep libc''​) ieșirea standard a comenzii ''​strace -e open ls /​lib''​ și apoi redirectați-o în ''​strace-new.out''​ iar ieșirea de eroare standard în ''​strace-new.err''​.
 +
 +Filtrați (folosind ''​grep proc''​) ieșirea de eroare standard a comenzii ''​strace -e open ls /​lib''​ și apoi redirectați-o în ''​strace-newer.err''​ iar ieșirea standard în ''/​dev/​null''​.
 +
 +Adăugați output-ul generat la ieșirea de eroare standard și ieșirea standard a comenzii ''​strace -e open ls /​lib''​ în fișierul ''​strace.log''​. O nouă rulare a comenzii va conduce la adăugarea de informații la sfârșitul acestui fișier.
 +
 +Folosiți utilitarul ''​tee''​ atât pentru a afișa la ieșirea standard cât și a scrie în fișierul ''​free.txt''​ ieșirea comenzii ''​free''​. Scrierea în fișier trebuie făcută fără a suprascrie ce era deja scris. (Hint: ''​man tee'',​ append)
 +
 +Explicați diferența de comportament între următoarele două comenzi:
 +<code bash>
 +cat / 2>&1 > error.txt
 +cat / > error.txt 2>&1
 +</​code>​
linux-admin/capitole/capitol-07.1475131652.txt.gz · Last modified: 2016/09/29 09:47 by mihaic