/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: empty
Primjer 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 proc
Pregled 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/status
Pregled /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 directory
cat /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 descriptora
koje je otvorio proces kao sto su fajlovi, mrezni socketi itd.ls /proc/PID/fdinfo
- direktorij sadrzi dodatne informacije ofile descriptors
cat /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 root
cime 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/fstab
Mountanje 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/proc
direktorija sada cemo provjeriti sa komandomls
te porediti sa defaultnimproc
direktorijem
ls /mnt/proc
ls /proc
- Nakon zavrsene vjezbe potrebno je uraditi
unmount
unmount /mnt/proc
Primjeri
* 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/uptime
Prvi 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