/proc - Dobivanje informacija o Linux procesu i hardveru
Danas ćemo istražiti sadržaj direktorija /proc kako bismo bolje razumjeli njegove funkcije. Važno je napomenuti da je direktorij /proc uobičajena značajka u svim distribucijama Linuxa, bez obzira na njihovu vrstu ili arhitekturu.
Jedna zabluda koju moramo odmah razjasniti je da direktorij /proc NIJE konvencionalni datotečni sustav u tradicionalnom smislu riječi.
To je virtualni datotečni sustav koji sadrži informacije o procesima i druge podatke povezane sa sustavom unutar procfs. Ovaj datotečni sustav mapiran je u direktorij /proc i montiran je tijekom procesa pokretanja sustava.
Što je /proc u Linuxu
Datotečni sustav /proc služi kao sučelje za strukture podataka jezgre i informacije o vremenu izvođenja, što pruža način za korisnike i aplikacije za pristup detaljnim informacijama o procesima, konfiguraciji sustava, hardveru i više, izlaganjem ove podatke kroz hijerarhiju virtualnih datoteka.
Za pregled kompletnog popisa datoteka i direktorija u datotečnom sustavu /proc možete koristiti naredbu ls kao što je prikazano.
ls /proc
Navigacija /proc u Linuxu
Kada dođete do /proc direktorija, primijetit ćete da postoje neke datoteke koje zvuče poznato, a zatim čitava hrpa numeriranih direktorija, od kojih svaki odgovara pokrenutom procesu na sustavu.
cd /proc
ls
Ovi numerirani direktoriji predstavljaju procese, poznatije kao ID-ovi procesa (PID-ovi), a unutar njih naredbu koja ih zauzima. Datoteke sadrže podatke o sustavu kao što su memorija (meminfo), CPU informacije (cpuinfo) i dostupni datotečni sustavi.
Evo nekoliko ključnih datoteka i direktorija na koje ćete naići:
/proc/cpuinfo
– Popis informacija o CPU-u(ima) u sustavu, kao što su model, brzina i broj jezgri./proc/meminfo
– Popis pojedinosti o upotrebi memorije i statistike koje sadrže ukupnu količinu memorije, slobodnu memoriju i memoriju koju koristi svaki proces./proc/filesystems
– Sadrži popis svih datotečnih sustava koje kernel podržava./proc/sys
– Popis konfiguracijskih i runtime parametara za kernel./proc/loadavg
– Prikaži prosječno opterećenje sustava u različitim vremenskim intervalima kao što su 1, 5 i 15 minuta./proc/self
– Simbolična poveznica na vlastiti direktorij procesa./proc/stat
– Sadrži različite statistike o sustavu, kao što je broj pokrenutih procesa, broj prekida i količina vremena provedenog u svakom CPU stanju./proc/uptime
– Sadrži količinu vremena koliko je sustav radio./proc/PID
– Sadrži informacije o određenom procesu, gdje je PID ID procesa.
Izdvajanje informacija o sustavu
/proc/meminfo koristi se za prikaz informacija o korištenju memorije i statistike Linux sustava, koji sadrži snimku različitih metrika povezanih s memorijom, što može biti korisno za praćenje performansi sustava i korištenja resursa .
cat /proc/meminfo
Kao što vidite, /proc/meminfo sadrži hrpu informacija o memoriji vašeg sustava, uključujući ukupnu dostupnu količinu (u kb) i slobodnu količinu na prva dva linije.
Pokretanje naredbe cat na bilo kojoj od datoteka u /proc izbacit će njihov sadržaj. Informacije o svim datotekama dostupne su na man stranici pokretanjem:
man 5 /proc/<filename>
Dat ću vam kratak pregled datoteka /proc:
- /proc/cmdline – Informacije retka za naredbe jezgre.
- /proc/console – Informacije o trenutnim konzolama uključujući tty.
- /proc/devices – Upravljački programi uređaja trenutačno konfigurirani za pokrenuti kernel.
- /proc/dma – Informacije o trenutnim DMA kanalima.
- /proc/fb – Framebuffer uređaji.
- /proc/filesystems – Trenutačni datotečni sustavi koje podržava kernel.
- /proc/iomem – trenutna mapa memorije sustava za uređaje.
- /proc/ioports – Regije registriranih priključaka za ulazno-izlaznu komunikaciju s uređajem.
- /proc/loadavg – Prosječno opterećenje sustava.
- /proc/locks – Datoteke koje trenutno zaključava kernel.
- /proc/meminfo – Podaci o memoriji sustava (pogledajte gornji primjer).
- /proc/misc – Razni upravljački programi registrirani za razne glavne uređaje.
- /proc/modules – Trenutno učitani moduli kernela.
- /proc/mounts – Popis svih nosača koje koristi sustav.
- /proc/partitions – Detaljne informacije o particijama koje su dostupne sustavu.
- /proc/pci – Informacije o svakom PCI uređaju.
- /proc/stat – Zapis ili razne statistike čuvane od posljednjeg ponovnog pokretanja.
- /proc/swap – Informacije o swap prostoru.
- /proc/uptime – Informacije o neprekidnom radu (u sekundama).
- /proc/version – instalirana verzija kernela, gcc verzija i distribucija Linuxa.
Izdvajanje informacija o procesu
Unutar /proc numeriranih direktorija pronaći ćete nekoliko datoteka i linkova. Upamtite da su brojevi ovih direktorija u korelaciji s PID-om naredbe koja se izvodi unutar njih.
Na primjer, navigacija do /proc/
pruža detalje kao što su:
/proc//cmdline
– Argumenti naredbenog retka koji se koriste za pokretanje procesa./proc//status
– Detaljne informacije o statusu, uključujući korištenje memorije i statistiku procesa./proc//fd
– Simboličke veze na datoteke koje je otvorio proces.
Iskoristimo primjer za prikaz mape pod nazivom /proc/12.
cd /proc/12
ls
Ako trčim:
cat /proc/12/status
Dobivam sljedeće:
Dakle, što ovo znači? Pa, važan dio je na vrhu. Iz statusne datoteke možemo vidjeti da ovaj proces pripada rcu_tasks_rude_kthread. Njegovo trenutno stanje je mirovanje, a ID procesa je 12, očito.
Također možemo vidjeti tko ovo pokreće, budući da su UID i GID 0, što znači da ovaj proces pripada korijenu snažan> korisnik.
U bilo kojem numeriranom direktoriju imat ćete sličnu strukturu datoteka, a one najvažnije sa svojim opisima su sljedeće:
- cmdline – naredbeni redak procesa
- okolina – varijable okoline
- fd – deskriptori datoteka
- ograničenja – sadrži informacije o ograničenjima procesa
- nosači – povezane informacije
Također ćete primijetiti nekoliko poveznica u numeriranom imeniku:
- cwd – poveznica na trenutni radni direktorij procesa
- exe – poveznica na izvršnu datoteku procesa
- root – poveznica na radni direktorij procesa
Ovo bi vam trebalo pomoći da se upoznate s direktorijem /proc. Također bi trebao pružiti uvid u to kako brojne naredbe dobivaju svoje podatke, kao što su vrijeme rada, lsof, mount i ps, da spomenemo samo neke.