/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.