Linux Tutorial – Puntata 16
di jolek78
Care/i fruitrici e fruitori del blog, in questi post – ogni domenica mattina – si parlerà del sistema operativo GNU/Linux e degli strumenti per utilizzarlo al massimo delle potenzialità. Cercheremo di spiegare come funziona, cosa è il kernel, come costruirsi una vpn, come settare un firewall e giocare col terminale, usare adb e altro. Se il capitalismo della sorveglianza ci vuole passivi consumatori-consumatrici di servizi noi si risponde con un po’ di “cultura informatica” e un MARAMEO (quasi affettuoso). Buona lettura!
Bentornati a tutti. Ci eravamo lasciati la scorsa settimana parlando del /proc fs e cercando di descrivere, perlomeno per sommi capi, alcuni dei files contenuti all’interno della dir /proc/1 che significava fare riferimento al primo processo del sistema, ovvero init. Ci siamo anche detti che la nostra analisi era stata sommaria e che ci saremmo riservati, con una seconda parte, di analizzare i processi controllati direttamente dal kernel. Dunque, cercando di rispettare le promesse, eccoci qui pronti per ripartire. Di cose da dire ce ne sono ancora molte, e su tante sorvoleremo (altrimenti ci vorrebbe un intero corso di informatica) ma una su tutte è da ripetere: su linux tutto è considerato come un file e quindi non ci si deve stupire che l’output di alcuni comandi rispecchierà quasi esattamente il contenuto dei file presenti in /proc. A proposito: anche per oggi preparate due tazze di the…
/PROC (2/2)
bottega@bottegadelbarbieri /proc ls -lha -p | grep -v '/$' total 4.0K -r--r--r-- 1 root root 0 Jun 19 10:01 bootconfig -r--r--r-- 1 root root 0 Jun 19 10:01 buddyinfo -r--r--r-- 1 root root 0 Jun 19 10:01 cgroups -r--r--r-- 1 root root 0 Jun 19 10:01 cmdline -r--r--r-- 1 root root 0 Jun 19 10:01 consoles -r--r--r-- 1 root root 0 Jun 19 10:01 cpuinfo -r--r--r-- 1 root root 0 Jun 19 10:01 crypto -r--r--r-- 1 root root 0 Jun 19 10:01 devices -r--r--r-- 1 root root 0 Jun 19 10:01 diskstats -r--r--r-- 1 root root 0 Jun 19 10:01 dma -r--r--r-- 1 root root 0 Jun 19 10:01 execdomains -r--r--r-- 1 root root 0 Jun 19 10:01 fb -r--r--r-- 1 root root 0 Jun 19 10:01 filesystems -r--r--r-- 1 root root 0 Jun 19 10:01 interrupts -r--r--r-- 1 root root 0 Jun 19 10:01 iomem -r--r--r-- 1 root root 0 Jun 19 10:01 ioports -r--r--r-- 1 root root 0 Jun 19 10:01 kallsyms -r-------- 1 root root 128T Jun 19 10:01 kcore -r--r--r-- 1 root root 0 Jun 19 10:01 keys -r--r--r-- 1 root root 0 Jun 19 10:01 key-users -r-------- 1 root root 0 Jun 19 10:01 kmsg -r-------- 1 root root 0 Jun 19 10:01 kpagecgroup -r-------- 1 root root 0 Jun 19 10:01 kpagecount -r-------- 1 root root 0 Jun 19 10:01 kpageflags -r--r--r-- 1 root root 0 Jun 19 10:01 loadavg -r--r--r-- 1 root root 0 Jun 19 10:01 locks -r--r--r-- 1 root root 0 Jun 19 10:01 mdstat -r--r--r-- 1 root root 0 Jun 19 10:01 meminfo -r--r--r-- 1 root root 0 Jun 19 10:01 misc -r--r--r-- 1 root root 0 Jun 19 10:01 modules lrwxrwxrwx 1 root root 11 Jun 19 10:01 mounts -> self/mounts -rw-r--r-- 1 root root 0 Jun 19 10:01 mtrr lrwxrwxrwx 1 root root 8 Jun 19 10:01 net -> self/net -r-------- 1 root root 0 Jun 19 10:01 pagetypeinfo -r--r--r-- 1 root root 0 Jun 19 10:01 partitions -r--r--r-- 1 root root 0 Jun 19 10:01 sched_debug -r--r--r-- 1 root root 0 Jun 19 10:01 schedstat lrwxrwxrwx 1 root root 0 Jun 19 10:01 self -> 3791 -r-------- 1 root root 0 Jun 19 10:01 slabinfo -r--r--r-- 1 root root 0 Jun 19 10:01 softirqs -r--r--r-- 1 root root 0 Jun 19 10:01 stat -r--r--r-- 1 root root 0 Jun 19 10:01 swaps --w------- 1 root root 0 Jun 19 10:01 sysrq-trigger lrwxrwxrwx 1 root root 0 Jun 19 10:01 thread-self -> 3791/task/3791 -r-------- 1 root root 0 Jun 19 10:01 timer_list -r--r--r-- 1 root root 0 Jun 19 10:01 uptime -r--r--r-- 1 root root 0 Jun 19 10:01 version -r--r--r-- 1 root root 0 Jun 19 10:01 version_signature -r-------- 1 root root 0 Jun 19 10:01 vmallocinfo -r--r--r-- 1 root root 0 Jun 19 10:01 vmstat -r--r--r-- 1 root root 0 Jun 19 10:01 zoneinfo
L’elenco che abbiamo listato precedentemente altro non è che la lista di alcuni “kernel data files”, ovvero alcuni file che rappresentano informazioni provenienti direttamente dal kernel. Esploriamone dunque qualcuno:
cmdline >> il comando con cui e’ partito il sistema al boot:
bottega@bottegadelbarbieri /proc more cmdline BOOT_IMAGE=/vmlinuz-5.8.0-55-generic root=/dev/mapper/vgxubuntu-root ro quiet splash
Verifichiamo la versione del kernel che stiamo utilizzando:
bottega@bottegadelbarbieri /proc uname -a ; date
Linux bottegadelbarbieri 5.8.0-55-generic #62~20.04.1-Ubuntu SMP Wed Jun 2 08:55:04 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Sat 19 Jun 10:36:01 BST 2021
diskstats >> statistiche di utilizzo I/O (scrittura/lettura) dei dischi:
bottega@bottegadelbarbieri /proc cat diskstats 7 0 loop0 12 0 36 31 0 0 0 0 0 40 31 0 0 0 0 0 0 7 1 loop1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 2 loop2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 3 loop3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 4 loop4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 5 loop5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 6 loop6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 loop7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 sr0 31 0 144 11 0 0 0 0 0 40 11 0 0 0 0 0 0 8 0 sda 20654 14190 1208587 29867 7200 9873 867073 20225 0 26772 58276 0 0 0 0 1485 8184 8 1 sda1 155 1013 13184 48 2 0 9 0 0 132 48 0 0 0 0 0 0 8 2 sda2 2 0 4 0 0 0 0 0 0 12 0 0 0 0 0 0 0 8 5 sda5 144 20 10626 79 29 16 360 117 0 272 196 0 0 0 0 0 0 8 6 sda6 20240 13157 1179825 29699 6302 9857 866704 14024 0 23072 43724 0 0 0 0 0 0 253 0 dm-0 33344 0 1178082 69308 16931 0 866704 121964 0 27308 191272 0 0 0 0 0 0 253 1 dm-1 33057 0 1165530 69248 16651 0 871552 89456 0 27212 158704 0 0 0 0 0 0 253 2 dm-2 243 0 10712 76 0 0 0 0 0 88 76 0 0 0 0 0 0
meminfo >> informazioni sulla memoria in uso (in kb):
bottega@bottegadelbarbieri /proc cat meminfo |head -n 20 MemTotal: 2034740 kB MemFree: 940920 kB MemAvailable: 1624972 kB Buffers: 99664 kB Cached: 671348 kB SwapCached: 0 kB Active: 434272 kB Inactive: 462044 kB Active(anon): 126276 kB Inactive(anon): 4152 kB Active(file): 307996 kB Inactive(file): 457892 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 1003516 kB SwapFree: 1003516 kB Dirty: 8 kB Writeback: 0 kB AnonPages: 125324 kB Mapped: 125000 kB bottega@bottegadelbarbieri /proc sar -r 4 4 Linux 5.8.0-55-generic (bottegadelbarbieri) 19/06/21 _x86_64_ (2 CPU) 11:34:45 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 11:34:49 941408 1625984 167068 8.21 99892 671636 755448 24.86 434592 462164 216 11:34:53 941156 1625732 167312 8.22 99900 671636 755448 24.86 434616 462164 32 11:34:57 941156 1625732 167304 8.22 99908 671636 755448 24.86 434616 462164 40 11:35:01 941156 1625732 167304 8.22 99908 671636 755448 24.86 434616 462164 44 Average: 941219 1625795 167247 8.22 99902 671636 755448 24.86 434610 462164 83
vmstat >> informazioni sulla memoria virtuale in uso (in kb):
bottega@bottegadelbarbieri /proc cat vmstat |head -n 20 nr_free_pages 235356 nr_zone_inactive_anon 1038 nr_zone_active_anon 31577 nr_zone_inactive_file 114445 nr_zone_active_file 77035 nr_zone_unevictable 0 nr_zone_write_pending 0 nr_mlock 0 nr_page_table_pages 938 nr_kernel_stack 2984 nr_bounce 0 nr_zspages 0 nr_free_cma 0 numa_hit 2234232 numa_miss 0 numa_foreign 0 numa_interleave 67285 numa_local 2234232 numa_other 0 nr_inactive_anon 1038 bottega@bottegadelbarbieri /proc vmstat 4 4 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 941684 99728 771272 0 0 63 45 183 49 0 0 99 0 0 0 0 0 941676 99728 771272 0 0 0 0 309 30 0 0 100 0 0 0 0 0 941676 99736 771272 0 0 0 3 282 30 0 0 100 0 0 0 0 0 941676 99736 771272 0 0 0 0 269 25 0 0 100 0 0
cpuinfo >> informazioni sulla cpu (tenete a mente che questa e’ una macchina virtuale, e lavora in memoria):
bottega@bottegadelbarbieri /proc cat cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 142 model name : Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz stepping : 9 cpu MHz : 2711.998 cache size : 3072 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 22 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase avx2 invpcid rdseed clflushopt md_clear flush_l1d bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds bogomips : 5423.99 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual bottega@bottegadelbarbieri /proc sar 4 4 Linux 5.8.0-55-generic (bottegadelbarbieri) 19/06/21 _x86_64_ (2 CPU) 11:35:40 CPU %user %nice %system %iowait %steal %idle 11:35:44 all 0.00 0.00 0.13 0.00 0.00 99.87 11:35:48 all 0.00 0.00 0.00 0.00 0.00 100.00 11:35:52 all 0.00 0.00 0.00 0.00 0.00 100.00 11:35:56 all 0.00 0.00 0.00 0.00 0.00 100.00 Average: all 0.00 0.00 0.03 0.00 0.00 99.97
interrupts >> informazioni sugli interrupts, ovvero, essenzialmente, i momenti in cui il sistema smette per un istante di lavorare per leggere e interpretare il comando impartito attraverso la tastiera (IRQ):
bottega@bottegadelbarbieri /proc cat interrupts CPU0 CPU1 0: 29 0 IO-APIC 2-edge timer 1: 0 31 IO-APIC 1-edge i8042 8: 0 0 IO-APIC 8-edge rtc0 9: 0 0 IO-APIC 9-fasteoi acpi 12: 158 0 IO-APIC 12-edge i8042 14: 0 0 IO-APIC 14-edge ata_piix 15: 0 5491 IO-APIC 15-edge ata_piix 18: 375 67 IO-APIC 18-fasteoi vmwgfx 19: 6349 1864 IO-APIC 19-fasteoi ehci_hcd:usb1, enp0s3 20: 0 0 IO-APIC 20-fasteoi vboxguest 21: 793 23690 IO-APIC 21-fasteoi ahci[0000:00:0d.0], snd_intel8x0 22: 0 28 IO-APIC 22-fasteoi ohci_hcd:usb2 NMI: 0 0 Non-maskable interrupts LOC: 57249 1736371 Local timer interrupts SPU: 0 0 Spurious interrupts PMI: 0 0 Performance monitoring interrupts IWI: 0 0 IRQ work interrupts RTR: 0 0 APIC ICR read retries RES: 3734 2136 Rescheduling interrupts CAL: 42918 63464 Function call interrupts TLB: 1098 1223 TLB shootdowns TRM: 0 0 Thermal event interrupts THR: 0 0 Threshold APIC interrupts DFR: 0 0 Deferred Error APIC interrupts MCE: 0 0 Machine check exceptions MCP: 18 18 Machine check polls ERR: 0 MIS: 7 PIN: 0 0 Posted-interrupt notification event NPI: 0 0 Nested posted-interrupt event PIW: 0 0 Posted-interrupt wakeup event
Davvero ogni file presente all’interno di /proc meriterebbe una puntata a parte, sia per quanto riguarda il suo significato, sia per quanto riguarda la sua interpretazione. Il concetto che deve rimanere in testa, alla fine di questa piccola esplorazione, e’ solo e soltanto uno: tutte le informazioni dei processi, sia per quanto riguarda i programmi, sia per quanto riguarda il kernel, sono scritte qui, in questa directory. Niente di piu’, niente di meno.
Solo un’ultima cosa. Provate a listare la sub-directory /proc/sys/:
bottega@bottegadelbarbieri /proc ls -lha sys/ total 0 dr-xr-xr-x 1 root root 0 Jun 19 10:01 . dr-xr-xr-x 196 root root 0 Jun 19 10:01 .. dr-xr-xr-x 1 root root 0 Jun 19 10:04 abi dr-xr-xr-x 1 root root 0 Jun 19 10:04 debug dr-xr-xr-x 1 root root 0 Jun 19 10:01 dev dr-xr-xr-x 1 root root 0 Jun 19 10:01 fs dr-xr-xr-x 1 root root 0 Jun 19 10:01 kernel dr-xr-xr-x 1 root root 0 Jun 19 10:01 net dr-xr-xr-x 1 root root 0 Jun 19 10:04 sunrpc dr-xr-xr-x 1 root root 0 Jun 19 10:04 user dr-xr-xr-x 1 root root 0 Jun 19 10:01 vm
e poi, compiti a casa: cliccate questo link e dateci una lettura. Potrete vedere quanto e’ profonda la tana dal bianconiglio…
Alla prossima settimana!
jolek78
>> | Indice | << |
Puntata 15 | < > | Puntata 17 |
Il logo “Tux Linux” e’ stato realizzato e distribuito dall’artista deiby-ybied su Deviantart in licenza Creative Commons BY-NC-SA 3.0