User Tools

Site Tools


linux-admin:capitole:capitol-11

Differences

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

Link to this comparison view

Next revision
Previous revision
linux-admin:capitole:capitol-11 [2016/06/06 18:24]
127.0.0.1 external edit
linux-admin:capitole:capitol-11 [2016/10/09 21:49] (current)
mihaic
Line 1: Line 1:
 ====== 11. Investigarea sistemului, hardware ====== ====== 11. Investigarea sistemului, hardware ======
  
-TODO+Din rațiuni precum documentare,​ monitorizare,​ depanare, informare statistică ne propunem să investigăm un sistem din punct de vedere hardware. 
 + 
 +Alte tipuri de investigații folosite până la acest curs au fost: 
 +  * investigarea proceselor (''​ps'',​ ''​top''​) 
 +  * investigarea sistemului de fișiere  
 +  * investigarea sistemului de operare (kernel, distribuție) (''​uname'',​ ''/​etc/​issue''​) 
  
 ===== Subiecte abordate ===== ===== Subiecte abordate =====
  
-  * TODO +  * Investigarea hardware-ului și a resurselor consumate
-  * TODO +
-  * TODO+
  
 ==== Utilitare folosite ==== ==== Utilitare folosite ====
  
-  * TODO +  * ''/​dev'',​ ''/​proc/​cpuinfo'',​ ''/​proc/​meminfo'',​ ''​lscpu'',​ ''​free'',​ ''​uptime'',​ ''​pidstat'',​ ''​mpstat'',​ ''​vmstat'',​ ''​iostat'',​ ''​iotop'',​ ''​lspci'',​ ''​lshw'',​ ''​inxi'',​ ''​lsusb'',​ ''​dstat'',​ ''​lsblk'',​ ''/​dev'',​ ''​%%/​dev/​disk/​by-...%%''​
-  * TODO +
-  * TODO+
  
 ==== Bune practici ==== ==== Bune practici ====
  
-  * TODO +  * Utlitare de afișare și utilitare/​fișiere care pot fi prelucrate 
-  * TODO +  * Investigarea este un mijloc, nu un obiectiv
-  * TODO+
  
-===== Resurse utile ===== 
  
-  * TODO +===== Exerciții =====
-  * TODO+
  
-==== Slide-uri ====+==== Demo-uri ====
  
-[[http://koala.cs.pub.ro/training/res/medium-unix/slides/cap-11.pdf|Slide-uri capitol 11]]+# Intrați în ''/​dev''​ și faceți un long listing a conținutului:​ <code bash> 
 +cd /dev/ ; ls -la 
 +</​code>​ 
 +# Observați informațiile prezentate și identificați ce este diferit față de un fișier normal. 
 +  * tipul fișierului este ''​%%'​c'​%%''​ sau ''​%%'​b'​%%''​ (în loc de ''​%%'​-'​%%''​ sau ''​%%'​d'​%%''​) 
 +  * în loc de mărimea fișerului aveți o pereche de numere (numite **număr major** și ** număr minor**) 
 +# Listați în format lung toate dispozitivele de tipul tty, apoi toate dispozitive de tip harddisk sau partiție <code bash> 
 +alexj@hathor /dev $ ls -la tty* 
 +crw--w---- 1 root tty     ​4, ​ 0 Mar 16 18:27 tty0 
 +crw-rw---- 1 root tty     ​4, ​ 1 Mar 16 18:27 tty1 
 +crw--w---- 1 root tty     4, 10 Mar 16 18:27 tty10 
 +crw--w---- 1 root tty     4, 11 Mar 16 18:27 tty11 
 +crw--w---- 1 root tty     4, 12 Mar 16 18:27 tty12 
 +crw--w---- 1 root tty     4, 13 Mar 16 18:27 tty13 
 +[...] 
 +alexj@hathor /dev $ ls -la [sh]d* 
 +brw-rw---- 1 root disk 8,  0 Mar 22 17:48 sda 
 +brw-rw---- 1 root disk 8,  1 Mar 16 18:27 sda1 
 +brw-rw---- 1 root disk 8,  2 Mar 22 12:21 sda2 
 +brw-rw---- 1 root disk 8,  5 Mar 16 18:27 sda5 
 +brw-rw---- 1 root disk 8, 16 Mar 22 12:21 sdb 
 +brw-rw---- 1 root disk 8, 17 Mar 16 18:27 sdb1 
 +</code> 
 +  * Observați faptul că fiecare intrare care aparține aceluiași hardware are acelasi număr major, dar fiecare are un număr minor diferit. 
 +# Listați conținutul lui ''​/dev/​random''​ <code bash> 
 +cat /​dev/​random 
 +</​code>​ 
 +  * Folosiți **ctrl-c** pentru a opri procesul ''​cat''​. 
 +# Încercați să scrieți un text în fișierul ''/​dev/​full''​. <code bash> 
 +echo "​test">/​dev/​full 
 +</​code>​ 
 +  * Observați mesajul de eroare. Pseudodispozitivul simulează un dispozitiv ce nu mai poate accepta date pentru că este umplut. 
 +# Folosind utilitarul **dd**, creați un fișier de 1KB ce conține doar zerouri (nu caracterul '​0'​ ci caracterul cu codul ASCII 0)<code bash> 
 +dd if=/dev/zero of=~/zeros bs=1KB count=1 
 +</code> 
 +  * Folosiți utilitarul **hexdump** sau **xxd** pentru a vizualiza conținutul fișierului zeros. 
 +# Intrați în ''​/proc'',​ listați conținutul direcorului și observați fișierele și directoarele disponibile. 
 +# Vizualizați conținutul fișierelor ''/​proc/​cpuinfo'',​ ''/​proc/​meminfo'',​ ''/​proc/​interrupts''​ și ''/​proc/​ioports''​. 
 +  * Fișierele conțin informații despre procesor, memoria fizică, întreruperile hardware din sistem și porturile IO pentru dispozitive. 
 +# Folosiți comanda **strace** pentru a vizualiza apelurile de sistem "​open"​ făcute de comanda **uptime**. Izolați doar deschiderile de fisiere din ''/​proc''​. Vizualizati apoi conținutul fișerelor din ''/​proc''​ găsite. <code bash> 
 +alexj@hathor ~ $ strace -e open uptime 2>&​1 ​|grep "/​proc"​ 
 +open("/​proc/​uptime",​ O_RDONLY) ​         = 3 
 +open("/​proc/​loadavg",​ O_RDONLY) ​        = 4 
 +</​code>​ 
 +# Intrați în directorul din ''/​proc''​ corespunzător procesului bash în care sunteți și listați conținutul. <code bash> 
 +cd /proc/$$; ls -la 
 +</​code>​ 
 +  * vizualizați conțintul fișierului ''​status''​ 
 +  * vizualizati conținutul fisierului ''​cmdline''​ 
 +  * vizulizati folosind long listing conținutul directorului ''​fd''​ 
 +# Folosiți comenzile **lspci** și **lsusb** pentru a lista dispozitivele de tip PCI și USB din sistem.
  
-<​html>​ +==== Exerciții de investigare hardware ==== 
-  <​center>​ +# Listați toate fișierele ce reprezintă discurile de tip ATA (adică cele al căror nume începe cu ''​hd''​) sau SATA (adică cele al căror nume începe cu ''​sd''​) din sistem (**Indiciu**''​/dev'',​ ''​grep''​). 
-    <iframe src="http://docs.google.com/​viewer?​url=http://koala.cs.pub.ro/training/res/​linux-admin/slides/cap-11.pdf&​embedded=true"​ width="​600"​ height="​470" ​  ​style="​bordernone;"></​iframe>​ +# Listați toate fișierele ce reprezintă partitiile discului ''​sda''​. 
-  ​</center>​ +# Listați toate dispozitivele de tip bloc din sistem (**Indiciu**''​/dev'',​ ''​grep'',​ ''​^b'',​ ''​cut''​). 
-</​html>​+# Listați toate dispozitivele de tip caracter din sistem (**Indiciu**:​ ''​/dev'',​ ''​grep'',​ ''​^c'',​ ''​cut''​). 
 +# Găsiți tipul procesorului din sistem. 
 +# Afșați informații despre tipurile de dispozitive din sistem, folosind fișiereul ''​/proc/devices''​. 
 +# Aflați care este tipul plăcii de rețea și tipul plăcii video. 
 +# Deschideți folosind vim fișierul ''​/etc/passwd''​. 
 +  * Găsiți pid-ul procesului nou deschis și intrați în directorul din ''/​proc''​ corespunzător. 
 +  * Gasiti fișierul ce conține comanda cu care a fost deschis procesul. 
 +  * Găsiți fișierele deschise de proces (**Indiciu**''​fd''​ sau ''​lsof''​). 
 +# Folosiți comanda ''​lsmod''​ pentru a lista modulele de nucleu inserate. 
 +  ​* Folosind ''​strace''​ pe comanda precedentă,​ aflați din ce fișier din ''​/proc''​ obține ''​lsmod''​ informațiile.
  
-===== Exerciții ​===== +==== Exerciții ​de investigare hardware suplimentare ​====
- +
-==== Demo-uri ​====+
  
-TODO+Afișați informații despre utilizarea resurselor sistemului:​ 
 +* câți utilizatori sunt online 
 +* câte procese sunt active 
 +* cât spațiu este ocupat pe fiecare din partițiile sistemului 
 +* cât procesor este ocupat 
 +* câtă memorie este ocupată 
 +* cât spațiu de swap este ocupat 
 +* ce trafic este curent pe placa de rețea (**hint**: ''​nethogs'',​ ''​iptraf''​)
  
-TODO+Pentru a afișa într-un format simplu informații despre monitorizarea sistemului puteți folosi utilitarul ''​dstat''​.
  
-==== TODOExercițiu 1 ====+Afișați informații despre sistem precum: 
 +* dacă procesorul are suport de virtualizare 
 +* care este dimensiunea memoriei cache 
 +* ce sistem de fișiere se găsește pe fiecare partiție 
 +* care este viteza maximă de lucru pentru HDD (**hint**: ''​hdparm''​)
  
-TODO+Din fișierul de [[http://​lpic.ro/​res/​skel/​sandbox.kext_iOS9.3|aici]] dorim să extragem partea care începe de la offset-ul ''​0x13000''​ (în hexazecimal) până la sfârșit. Puneți conținutul într-un alt fișier. Afișați conținutul primilor 16 octeți din fișier în format hexazecimal;​ output-ul trebuie să fie de forma ''​0080 b67f 6a01 7900 1180 0000 b57f b57f''​.
  
-==== TODO: Exercițiu 2 ====+<note tip> 
 +Pentru a extrage o parte dintr-un fișier folosiți comanda ''​dd''​. Folosiți opțiunea ''​skip''​ a ''​dd''​.
  
-TODO+Pentru că operați pe octeți, nu pe blocuri, va trebui să configurați pentru ''​dd''​ dimensiunea blocului la ''​1''​ folosind opțiunea ''​bs''​. 
 +</​note>​
  
linux-admin/capitole/capitol-11.1465226651.txt.gz · Last modified: 2016/10/09 16:48 (external edit)