/proc - Dobijte informacije o procesu i hardveru za Linux


Danas ćemo ući u sadržaj direktorija /proc kako bismo bolje razumjeli njegove funkcionalnosti. Važno je napomenuti da je direktorij /proc uobičajena karakteristika u svim distribucijama Linuxa, bez obzira na njihov ukus ili arhitekturu.

Jedna zabluda koju moramo odmah razjasniti je da direktorij /proc NIJE konvencionalni sistem datoteka u tradicionalnom smislu tog pojma.

To je virtuelni sistem datoteka koji sadrži informacije o procesima i drugim sistemskim podacima unutar procfs. Ovaj sistem datoteka je mapiran u /proc direktorij i montira se tokom procesa pokretanja sistema.

Šta je /proc u Linuxu

Datotečni sistem /proc služi kao sučelje za strukture podataka kernela i informacije o vremenu izvođenja, što omogućava korisnicima i aplikacijama način da pristupe detaljnim informacijama o procesima, konfiguraciji sistema, hardveru i još mnogo toga, otkrivanjem ove podatke kroz hijerarhiju virtuelnih datoteka.

Za pregled kompletne liste datoteka i direktorija u sistemu datoteka /proc, možete koristiti komandu ls kao što je prikazano.

ls /proc

Navigacija /proc u Linuxu

Kada dođete do direktorija /proc, primijetit ćete da postoje neke datoteke koje zvuče poznato, a zatim čitava gomila numeriranih direktorija, od kojih svaki odgovara pokrenutom procesu na sistemu.

cd /proc
ls

Ovi numerisani direktoriji predstavljaju procese, poznatije kao ID-ovi procesa (PID), i unutar njih, naredbu koja ih zauzima. Datoteke sadrže sistemske informacije kao što su memorija (meminfo), informacije o procesoru (cpuinfo) i dostupni sistem datoteka.

Evo nekoliko ključnih datoteka i direktorija na koje ćete naići:

  • /proc/cpuinfo – Navedite informacije o CPU-ima na sistemu, kao što su model, brzina i broj jezgara.
  • /proc/meminfo – Navedite detalje o korištenju memorije i statistiku koja sadrži ukupnu količinu memorije, slobodnu memoriju i memoriju koju koristi svaki proces.
  • /proc/filesystems – Sadrži listu svih sistema datoteka koje podržava kernel.
  • /proc/sys – Navedite konfiguracijske i runtime parametre za kernel.
  • /proc/loadavg – Prikaži prosjek opterećenja sistema u različitim vremenskim intervalima kao što su 1, 5 i 15 minuta.
  • /proc/self – Simbolička veza do vlastitog direktorija procesa.
  • /proc/stat – Sadrži razne statistike o sistemu, kao što je broj pokrenutih procesa, broj prekida i količina vremena provedenog u svakom stanju CPU-a.
  • /proc/uptime – Sadrži količinu vremena tokom kojeg je sistem bio pokrenut.
  • /proc/PID – Sadrži informacije o određenom procesu, gdje je PID ID procesa.

Ekstrahovanje sistemskih informacija

/proc/meminfo se koristi za prikaz informacija o korištenju memorije i statistici Linux sistema, koji sadrži snimak različitih metrika vezanih za memoriju, što može biti korisno za praćenje performansi sistema i korištenja resursa .

cat /proc/meminfo

Kao što vidite, /proc/meminfo sadrži gomilu informacija o memoriji vašeg sistema, uključujući ukupnu dostupnu količinu (u kb) i slobodan iznos na prva dva linije.

Pokretanje naredbe cat na bilo kojoj od datoteka u /proc će dati 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 o komandnoj liniji kernela.
  • /proc/console – Informacije o trenutnim konzolama uključujući tty.
  • /proc/devices – Upravljački programi uređaja koji su trenutno konfigurisani za pokrenuto jezgro.
  • /proc/dma – Informacije o trenutnim DMA kanalima.
  • /proc/fb – Framebuffer uređaji.
  • /proc/filesystems – Trenutni fajl sistemi podržani od strane kernela.
  • /proc/iomem – Trenutna mapa sistemske memorije za uređaje.
  • /proc/ioports – Registrirane regije portova za ulazno-izlaznu komunikaciju sa uređajem.
  • /proc/loadavg – Prosjek opterećenja sistema.
  • /proc/locks – Fajlovi trenutno zaključani od strane kernela.
  • /proc/meminfo – Informacije o sistemskoj memoriji (pogledajte gornji primjer).
  • /proc/misc – Razni drajveri registrovani za razne glavne uređaje.
  • /proc/modules – Trenutno učitani moduli kernela.
  • /proc/mounts – Lista svih nosača koje koristi sistem.
  • /proc/partitions – Detaljne informacije o particijama dostupnim sistemu.
  • /proc/pci – Informacije o svakom PCI uređaju.
  • /proc/stat – Zapis ili razne statistike sačuvane od posljednjeg ponovnog pokretanja.
  • /proc/swap – Informacije o swap prostoru.
  • /proc/uptime – Informacije o vremenu neprekidnog rada (u sekundama).
  • /proc/version – Instalirana verzija kernela, verzija gcc-a i Linux distribucija.

Ekstrahovanje informacija o procesu

Unutar /proc numerisanih direktorija naći ćete nekoliko fajlova i linkova. Zapamtite da su brojevi ovih direktorija u korelaciji sa PID-om komande koja se izvodi u njima.

Na primjer, navigacija do /proc/ pruža detalje kao što su:

  • /proc//cmdline – Argumenti komandne linije koji se koriste za pokretanje procesa.
  • /proc//status – Detaljne informacije o statusu, uključujući upotrebu memorije i statistiku procesa.
  • /proc//fd – Simboličke veze ka datotekama koje je proces otvorio.

Upotrijebimo primjer za pregled mape pod nazivom /proc/12.

cd /proc/12
ls

ako trčim:

cat /proc/12/status

dobijam sljedeće:

Dakle, šta 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 idle, a njegov proces ID je 12, očigledno.

Također možemo vidjeti ko ovo pokreće, jer su UID i GID 0, što ukazuje da ovaj proces pripada korijenskom jak> korisnik.

U bilo kojem numeriranom direktoriju, imat ćete sličnu strukturu datoteka, a najvažnije sa njihovim opisima su sljedeće:

  • cmdline – komandna linija procesa
  • okruženje – varijable okruženja
  • fd – deskriptori datoteka
  • ograničenja – sadrži informacije o granicama procesa
  • mounts – povezane informacije

Također ćete primijetiti nekoliko veza u numeriranom direktoriju:

  • cwd – veza do trenutnog radnog direktorija procesa
  • exe – veza do izvršne datoteke procesa
  • root – veza do radnog direktorija procesa

Ovo bi trebalo da vam pomogne da se upoznate sa /proc direktorijumom. Takođe bi trebalo da pruži uvid u to kako brojne komande dobijaju svoje informacije, kao što su uptime, lsof, mount i ps, da spomenemo samo neke.