This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
linux-admin:capitole:capitol-11 [2016/10/09 21:46] mihaic [Subiecte abordate] |
linux-admin:capitole:capitol-11 [2016/10/09 21:49] (current) mihaic |
||
---|---|---|---|
Line 15: | Line 15: | ||
==== 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="border: none;"></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''. |
- | ==== TODO: Exerciț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> | ||