/proc : Uvod u process information file system
Sta je to /proc?
Proc je virtuelni file sistem koji je mountiran u /proc direktorij te sadrzi poddirektorije
i fajlove u kojima se nalaze informacije o samom operativnom sistemu, kao sto su pokrenuti procesi, te hardveru.
Proc folder i fajlovi nisu snimljeni na disku nego se nalaze u RAM memoriji. Interesantno je da velicina fajlova i direktorija u /proc iznosi 0.
Ovo omogucuje VHS (Virtual File System) sto znaci da fajl ne sadrzi informacije sve do trenutka kada mu korisnik pristupi.
U tom trenutku sadrzaj se dinamicki ucita iz kernela i napuni sadrzajem.
Ovo mozemo lako provjeriti koristeci komandu file koja analizira fajlove te ispise infrmacije o tipu fajla.
Primjer za datoteku iz /proc:
file /proc/meminfo
/proc/meminfo: emptyPrimjer iznad jasno govori da je datoteka prazna. Medjutim, kada pokusamo pristupiti samom sadrzaju fajla komanda ce biti uspjesna:
cat /proc/meminfo Proc mozemo smatrati kao interfejs prema razlicitim informacija koje se nalaze u kernelu.
Neke informacije takodjer mozemo mijanjti dok je racunar upaljen - sysctl.
Dodatne informacije se nalaze na man stranici kojoj mozemo pristupiti pomocu sljedece komande.
man procPregled informacija o procesima
Pokrenuti proces ima jedinstveni PID ili Proces ID odnosno jedinstveni broj koji je snimljen u /proc direktoriju.
Prvi proces koji se boota jer init process i kao prvi ima dodijeljen broj 1. Ako zelimo da vidimo informacije
o initu kao sto je status procesa pokrecemo sljedecu komandu.
cat /proc/1/statusPregled /proc fajlva koji otkrivaju dodatne informaicije o zadanim procesima.
Napmena: U primjerima ispod potrebno je PID zamijeniti sa stvarnim brojem procesa.
cat /proc/PID/status- vraca status procesa te ostale korisne informacija kao ko je pokrenuo process te zauzece memorije.cat /proc/PID/cmdline- komanda koje je pokrenula porcesls /proc/PID/cwd- simbolicki link docurrent working directorycat /proc/PID/environ- sadrzi environment varijable koje formiraju okruzenje pod kojim je pokrenut procesls /proc/PID/exe- simbolicki link do samog programa, ako jos postoji na diskuls -l /proc/PID/fd- direktorij koji sadrzi simbolicke linkove do svihfile descriptorakoje je otvorio proces kao sto su fajlovi, mrezni socketi itd.ls /proc/PID/fdinfo- direktorij sadrzi dodatne informacije ofile descriptorscat /proc/PID/maps- datoteka koja sadrzi informacije o mapiranim fajlovima i blokovima kao sto su heap i stackls /proc/PID/root- simbolicki link do / odnosno root putanje onako kako ga vidi taj proces. Za vecinu procesa to ce biti / putanja osim ako se process ne pokrene preko chroot programa ilichange rootcime proces mozemo zavarati da je putanja do root foldra negdje drugo.ls /proc/PID/task- direktorij koji sadrzi hard linkove do taskova koji su pokrenuti od strane ovog procesa - parent proces.
Mountiranje proc-a
U ovom dijelu cemo opisati gdje se nalazi defaultna sistemska okacija za proc te kako proc mountirati u direktorij po zelji.
Defaultna mount lokacija
Proc se automatski mounta prilikom bootanja sistema na lokaciju /proc pomocu zapisa koji se nalazi u konfiguracijskom fajlu /etc/fstab. Sadrzaj te datoteke mozemo jednostavno izlistati pomocu grep komande.
grep proc /etc/fstabMountanje u proc u direktorij po zelji
Proc iz RAMA mozemo mountati u bilo koji direktorij na hard disku. To cinimo na sljedeci nacin.
- Napravite direktorij u koji cemo mountati proc
mkdir /mnt/proc- Izvrisite mount proc-a iz RAMA u
/mnt/proc
mount -t proc none /mnt/proc- Sadrzaj
/mnt/procdirektorija sada cemo provjeriti sa komandomlste porediti sa defaultnimprocdirektorijem
ls /mnt/proc
ls /proc- Nakon zavrsene vjezbe potrebno je uraditi
unmount
unmount /mnt/procPrimjeri
* Kako saznati informacije o procesoru?
cat /proc/cpuinfo* Kako saznati informacije o RAM memoriji?
cat /proc/meminfo* Kako saznati koliko dugo je sistem upaljen?
cat /proc/uptimePrvi broj je zbroj sekundi od zadnjeg restarta, drugi broj u sekundama govori koliko dugo je sistem idle.
* Kako saznati koji kernel se boota i sa kojim parametrima?
cat /proc/cmdline* Kako saznati verziju kernela?
cat /proc/version* Kako saznati listu particija?
cat /proc/partitions * Kako saznati informacije o swap particiji?
cat /proc/swaps