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