/proc

From ICO wiki
Revision as of 21:06, 6 December 2016 by Rrongele (talk | contribs)
Jump to navigationJump to search

Kirjeldus

/proc (process information pseudo-file system) on virtuaalne failisüsteem, milles asuvad virtuaalsed failid, mis hoiavad endas informatsiooni Linuxi süsteemi kohta - kaasaarvatud tuuma, protsesside ja seadistusparameetrite kohta.

/proc/ kataloogis asuvad virtuaalsed failid on suurusega 0 baiti, kuid faili avades võib seal olla suurel hulgal informatsiooni - operatsioonisüsteem kuvab kõik detailid faildesse jooksvalt. Lisaks vastab enamike failide aja- ning kuupäevasätteid hetke ajale ning kuupäevale, mis viitab asjaolule, et faile uuendatakse pidevalt. Selleks, et kogu kataloogi sisule oleks juurdepääs, peab kasutaja töötama juurkasutaja õigustes. Enamus kataloogis asuvatest failidest on ainult loetavad, kuid teatud failide kaudu on võimalik muuta ka tuuma parameetreid.

Lisaks failidele asuvad /proc/-is ka nummerdatud kataloogid. Iga nummerdatud kataloog esindab mingit protsessi ning number vastab protsessi ID-le (PID).

Selleks, et vaadata /proc/ kataloogis asuvaid faile, tuleks sisestada terminali järgmine käsklus

ll /proc/

Osa väljundist:

...
dr-xr-xr-x   9 root             root                           0 dets   3 22:55 11350/
dr-xr-xr-x   9 root             root                           0 dets   3 22:55 11588/
dr-xr-xr-x   9 root             root                           0 dets   4  2016 1177/
dr-xr-xr-x   9 root             root                           0 dets   4  2016 1183/
dr-xr-xr-x   9 root             root                           0 dets   4  2016 1187/
dr-xr-xr-x   9 root             root                           0 dets   3 22:55 11870/
dr-xr-xr-x   9 root             root                           0 dets   3 22:55 11894/
dr-xr-xr-x   9 root             root                           0 dets   4  2016 12/
dr-xr-xr-x   9 kasutaja         kasutaja                       0 dets   4  2016 1223/
...
-r--r--r--   1 root             root                           0 dets   3 22:58 cpuinfo
-r--r--r--   1 root             root                           0 dets   3 22:58 crypto
-r--r--r--   1 root             root                           0 dets   3 22:58 devices
...

Failid

Virtuaalsed failid, nagu näiteks /proc/interrupts, /proc/meminfo, /proc/mount, /proc/partitions tagavad süsteemi riistvara kohta hetkelist informatsiooni. Teisalt, aga näiteks /proc/filesystems ning /proc/sys tagavad informatsiooni süsteemi konfiguratsiooni ning liideste kohta.

/proc/ kataloogis olevaid faile saab vaadata näiteks käskluste cat, more või less abil.

Kui kasutaja soovib näiteks saada informatsiooni arvuti mälu kohta, tuleks tal sisestada terminalis käsklus :

cat /proc/meminfo

Väljund käsklusele võib olla midagi sarnast:

MemTotal:        8052476 kB
MemFree:         3556264 kB
MemAvailable:    5647832 kB
Buffers:          176760 kB
Cached:          2419456 kB
SwapCached:            0 kB
Active:          2562260 kB
Inactive:        1565064 kB
...

/proc/meminfo-st pärit informatsiooni kasutavad näiteks käsklused top ja free.

Protsessid

Nagu eelpool mainitud, vastab iga /proc/ kataloogis olev nummerdatud alamkataloog erinevale protsessile.

Näiteks võtame protsessi numbriga 1 ja vaatame antud kataloogi. Käivitame terminalis käskluse:

ls /proc/3939

Saame väljundi:

attr        comm             fd        map_files   net            pagemap      sessionid  status
autogroup   coredump_filter  fdinfo    maps        ns             personality  setgroups  syscall
auxv        cpuset           gid_map   mem         numa_maps      projid_map   smaps      task
cgroup      cwd              io        mountinfo   oom_adj        root         stack      timers
clear_refs  environ          limits    mounts      oom_score      sched        stat       uid_map
cmdline     exe              loginuid  mountstats  oom_score_adj  schedstat    statm      wchan

Selleks, et protsessi kohta rohkem informatsiooni saada, tuleks vaadata protsessi alamkataloogis olevat faili nimega status

Käivitame terminalis järgmise käskluse:

cat /proc/1/status/

Saame järgmise väljundi:

ame:   systemd
State:  S (sleeping)
Tgid:   1
Ngid:   0
Pid:    1
PPid:   0
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0
FDSize: 128
Groups:
NStgid: 1
NSpid:  1
NSpgid: 1
NSsid:  1
VmPeak:   250848 kB
VmSize:   185452 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:      6256 kB
VmRSS:      6136 kB
VmData:   149204 kB
VmStk:       136 kB
VmExe:      1392 kB
VmLib:      3664 kB
VmPTE:       104 kB
VmPMD:        16 kB
VmSwap:        0 kB
HugetlbPages:          0 kB
Threads:        1
SigQ:   0/31033
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 7be3c0fe28014a03
SigIgn: 0000000000001000
SigCgt: 00000001800004ec
CapInh: 0000000000000000
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
Seccomp:        0
Cpus_allowed:   ff
Cpus_allowed_list:      0-7
Mems_allowed:   00000000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        1975
nonvoluntary_ctxt_switches:     473


Saame teada, et protsess kuulub systemd-le. Protsessi hetkeolek on sleeping' ning protsessi ID (PID) on 1. Lisaks saame me näha, kes protsessi jooksutab ning kuna mõlemad UID ning GID on 0, siis suulub antud protsess juurkasutajale (root).

Igal nummerdatud alamkataloogil on sarnane failistruktuur. Ning lisaks failile status asub seal veel erinevaid faile. Neist mõned:

environ - keskkonnamuutujad limits - informatsioon protsessi limiitide kohta

Kasutatud allikad

Linux manual
procfs explained]
Linux proc filesystem explained Exploring proc in Linux