This shows you the differences between two versions of the page.
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> |