User Tools

Site Tools


advanced-unix:capitole:capitol-04

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
advanced-unix:capitole:capitol-04 [2016/05/11 09:30]
razvan
advanced-unix:capitole:capitol-04 [2016/05/11 13:14] (current)
razvan [Monitorizare cu sar]
Line 30: Line 30:
   * ''​dpkg -l'',​ ''​dpkg -L'',​ ''​dpkg -S'',​ ''​apt-file'',​ ''​apt-cache''​   * ''​dpkg -l'',​ ''​dpkg -L'',​ ''​dpkg -S'',​ ''​apt-file'',​ ''​apt-cache''​
   * ''/​etc/​issue'',​ ''​lsb_release'',​ ''​uname'',​ ''/​proc/​cmdline'',​ ''/​boot''​   * ''/​etc/​issue'',​ ''​lsb_release'',​ ''​uname'',​ ''/​proc/​cmdline'',​ ''/​boot''​
-  * ''/​dev'',​ ''/​proc/​cpuinfo'',​ ''/​proc/​meminfo'',​ ''​lscpu'',​ ''​free'',​ ''​uptime'',​ ''​pidstat'',​ ''​mpstat'',​ ''​vmstat'',​ ''​iostat'',​ ''​iotop'',​ ''​lspci'',​ ''​lshw'',​ ''​inxi'',​ ''​lsusb'',​ ''​dstat'',​ ''​lsblk'',​ ''/​dev'',​ ''​%%/​dev/​by-...%%''​+  * ''/​dev'',​ ''/​proc/​cpuinfo'',​ ''/​proc/​meminfo'',​ ''​lscpu'',​ ''​free'',​ ''​uptime'',​ ''​pidstat'',​ ''​mpstat'',​ ''​vmstat'',​ ''​iostat'',​ ''​iotop'',​ ''​lspci'',​ ''​lshw'',​ ''​inxi'',​ ''​lsusb'',​ ''​dstat'',​ ''​lsblk'',​ ''/​dev'',​ ''​%%/​dev/disk/​by-...%%''​
   * ''​ip'',​ ''​ip a s'',​ ''​ip l s'',​ ''​ip r s'',​ ''/​etc/​resolv.conf'',​ ''​netstat'',​ ''​ss'',​ ''​vnstat'',​ ''​iptraf'',​ ''​nethogs''​   * ''​ip'',​ ''​ip a s'',​ ''​ip l s'',​ ''​ip r s'',​ ''/​etc/​resolv.conf'',​ ''​netstat'',​ ''​ss'',​ ''​vnstat'',​ ''​iptraf'',​ ''​nethogs''​
   * ''​xxd'',​ ''​hexdump''​   * ''​xxd'',​ ''​hexdump''​
Line 58: Line 58:
 </​code>​ </​code>​
 # Observați informațiile prezentate și identificați ce este diferit față de un fișier normal. # 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'​)+  * 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**)   * î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> # 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?*+alexj@hathor /dev $ ls -la tty*
 crw--w---- 1 root tty     ​4, ​ 0 Mar 16 18:27 tty0 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-rw---- 1 root tty     ​4, ​ 1 Mar 16 18:27 tty1
Line 69: Line 69:
 crw--w---- 1 root tty     4, 13 Mar 16 18:27 tty13 crw--w---- 1 root tty     4, 13 Mar 16 18:27 tty13
 [...] [...]
-alexj@hathor /dev $ ls -la [sh]d?*+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,  0 Mar 22 17:48 sda
 brw-rw---- 1 root disk 8,  1 Mar 16 18:27 sda1 brw-rw---- 1 root disk 8,  1 Mar 16 18:27 sda1
Line 108: Line 108:
 ==== Exerciții de investigare hardware ==== ==== Exerciții de investigare hardware ====
  
-# Listați toate fișierele ce reprezintă discurile de tip ATA sau SATA din sistem (hint: /dev/, grep). +# 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''​). 
-# Listați toate fișierele ce reprezintă partitiile discului sda. +# Listați toate fișierele ce reprezintă partitiile discului ​''​sda''​
-# Listați toate dispozitivele de tip bloc din sistem (hint: /dev/, grep, ^b,cut). +# Listați toate dispozitivele de tip bloc din sistem (**Indiciu**''​/dev''​''​grep''​''​^b''​''​cut''​). 
-# Listați toate dispozitivele de tip caracter din sistem (hint: /dev/, grep, ^c,cut).+# Listați toate dispozitivele de tip caracter din sistem (**Indiciu**''​/dev''​''​grep''​''​^c''​''​cut''​).
 # Găsiți tipul procesorului din sistem. # Găsiți tipul procesorului din sistem.
-Găsiți deja listate toate dispozitivele ​de tip caracter sau bloc din sistem ​(hint: ​/proc/devices).+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. # Aflați care este tipul plăcii de rețea și tipul plăcii video.
 # Deschideți folosind vim fișierul ''/​etc/​passwd''​. # 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.   * 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.   * Gasiti fișierul ce conține comanda cu care a fost deschis procesul.
-  * Găsiți fișierele deschise de proces (hint: fd). +  * Găsiți fișierele deschise de proces (**Indiciu**''​fd''​ sau ''​lsof''​). 
-# Folosiți comanda ​**lsmod** pentru a lista modulele de nucleu inserate. +# Folosiți comanda ​''​lsmod'' ​pentru a lista modulele de nucleu inserate. 
-  * Folosind ​**strace** pe comanda precedentă,​ aflați din ce fișier din /proc îsi ia lsmod informațiile.+  * Folosind ​''​strace'' ​pe comanda precedentă,​ aflați din ce fișier din ''​/proc''​ obține ''​lsmod'' ​informațiile.
  
 ==== Exerciții de investigare hardware suplimentare ==== ==== Exerciții de investigare hardware suplimentare ====
Line 131: Line 131:
 * câtă memorie este ocupată * câtă memorie este ocupată
 * cât spațiu de swap este ocupat * cât spațiu de swap este ocupat
-* ce trafic este curent pe placa de rețea (**hint**: ​http://​www.binarytides.com/​linux-commands-monitor-network/​, ''​sar''​)+* ce trafic este curent pe placa de rețea (**hint**: ​''​nethogs''​, ''​iptraf''​)
  
 Pentru a afișa într-un format simplu informații despre monitorizarea sistemului puteți folosi utilitarul ''​dstat''​. Pentru a afișa într-un format simplu informații despre monitorizarea sistemului puteți folosi utilitarul ''​dstat''​.
Line 138: Line 138:
 * dacă procesorul are suport de virtualizare * dacă procesorul are suport de virtualizare
 * care este dimensiunea memoriei cache * care este dimensiunea memoriei cache
-* câte slot-uri de memorie RAM sunt prezente 
 * ce sistem de fișiere se găsește pe fiecare partiție * ce sistem de fișiere se găsește pe fiecare partiție
 * care este viteza maximă de lucru pentru HDD (**hint**: ''​hdparm''​) * care este viteza maximă de lucru pentru HDD (**hint**: ''​hdparm''​)
- 
-Instalați utilitarul ''​hardinfo''​ pentru a obține din interfața grafică informații despre hardware-ul sistemului. 
  
 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''​. 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''​.
Line 150: Line 147:
  
 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''​. 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>​
 +
 +==== Informații despre sistem ====
 +
 +Determinați următoarele informații despre sistem. Puteți folosi oricare dintre comenzile pe care le cunoașteți:​
 +
 +  * numele stației de lucru (''/​etc/​hostname''​)
 +  * tipul și versiunea distribuției (''/​etc/​issue''​ sau ''​lsb_release''​)
 +  * arhitectura procesorului (x86, x86_64, aarch64, armv7 etc.) și numărul de core-uri (Indicație:​ ''/​proc/​cpuinfo''​ sau [[http://​linux.die.net/​man/​1/​lscpu|lscpu]] și [[http://​linux.die.net/​man/​1/​nproc|nproc]]).
 +  * versiunea kernelului de Linux ([[http://​linux.die.net/​man/​1/​uname|uname]])
 +  * dimensiunea totală a memoriei RAM, memoria folosită și memoria liberă
 +  * numărul de partiții din sistem
 +  * modelul hard disk-ului, device-ul (Indicație:​ puteți folosi/​prelucra output-ul comenzilor [[http://​linux.die.net/​man/​8/​lsblk|lsblk]],​ [[http://​linux.die.net/​man/​1/​lshw|lshw]],​ [[http://​www.binarytides.com/​linux-hwinfo-command/​|hwinfo]],​ [[http://​www.binarytides.com/​inxi-system-information-linux/​|inxi]]
 +  * cât spațiu mai este disponibil pe hard disk 
 +
 +Agregați informațiile/​comenzile obținute mai sus într-un script care să aibă un output similar cu formatul de mai jos (nu trebuie să fie strict ca în exemplul de mai jos):
 +
 +<code bash>
 +hostname: ...
 +distribution:​ ...
 +architecture type: ...
 +kernel version: ...
 +total memory: ...
 +used memory: ...
 +free memory: ...
 +number of partitions: ...
 +hard disk model: ...
 +hard disk device: ...
 +hard disk free space: ...
 +NIC (Network Interface Card) model: ...
 +graphics card model: ...
 +monitor model: ...
 +</​code>​
 +
 +==== Informații despre pachete ====
 +
 +Determinați pachetul care conține fișierul header {{{gdk.h}}}. **Hint**: Puteți căuta după șirul {{{/​gdk.h}}} ca să căutați pachetele care conțin fix fișierul ''​gdk.h''​.
 +
 +Listați pachetele din repository care încep cu șirul {{{"​di"​}}}. **Indiciu**:​ Folosiți ''​apt-cache pkgnames''​.
 +
 +Din ce pachet face parte utilitarul ''​ifconfig''?​
 +
 +Ce executabile sunt conținute în pachetul ''​sysstat''?​ Dar în pachetul ''​coreutils''?​ **Indiciu**:​ Executabilele sunt cele care se găsesc într-un director care se termină în ''​bin/''​.
 +
 +==== Monitorizare cu sar ====
 +
 +Folosiți utilitarele ''​iostat'',​ ''​pidstat''​ și ''​mpstat''​ pentru a monitoriza informații despre sistem. Realizați rulări care:
 +  - Afișează informațiile aferente **o singură dată**.
 +  - Afișează informațiile aferente la fiecare 5 secunde.
 +  - Afișați, acolo unde se poate, informații doar pentru procesul shell curent (PID-ul său este indicat de construcția ''​$$''​).
 +
 +==== Rulare mașină virtuală ARM ====
 +
 +Pentru a rula un întreg sistem sub ARM folosiți comanda ''​qemu-system-arm''​ și indicațiile de [[http://​www.red-lang.org/​2012/​03/​setting-up-arm-virtual-machine.html|aici]]. Pentru a descărca acele imagini (filesystem,​ kernel, initial ramdisk) mai rapid, folosiți resursele de [[http://​titan.cs.pub.ro/​~razvan/​store/​arm/​|aici]].
 +
 +<note important>​
 +Pentru accesarea mașinii virtuale folosiți numele de utilizator ''​root''​ cu parola ''​root''​.
 +
 +Pentru a afla informații despre mașina virtuală proaspăt pornită rulați comanda<​code>​
 +uname -a
 +</​code>​
 +</​note>​
 +
 +<note tip>
 +Nu va merge comanda ''​ping''​ pe mașina virtuală, dar merge ''​wget''​ sau alte comenzi care au de-a face cu accesul la Internet.
 +</​note>​
 +
 +Pentru a copia programul compilat static anterior urmăriți [[http://​www.red-lang.org/​2012/​03/​setting-up-arm-virtual-machine.html|indicațiile]] legate de folosirea SSH pentru copiere (opțiunea ''​-redir tcp:​2222::​22''​ la ''​qemu-system-arm''​).
 +
 +<​note>​
 +**Opțional**:​ Instalați ''​vim''​ pe mașina virtuală QEMU de ARM.
 +
 +Pentru aceasta va trebui să editați fișierul ''/​etc/​apt/​sources.list''​ și să folosiți URL-uri de forma ''​archive.debian.org''​ în loc de ''​ftp.debian.org''​. Comentați liniile finale care conțin șirul ''​squeeze-updates''​ (cu ''​-'',​ adică ''​minus''​).
 </​note>​ </​note>​
advanced-unix/capitole/capitol-04.1462948212.txt.gz · Last modified: 2016/05/11 09:30 by razvan