Kanna /proc skráarkerfi í Linux


Í dag ætlum við að kíkja inn í /proc skrána og kynnast henni. /proc skráin er til staðar á öllum Linux kerfum, óháð bragði eða arkitektúr.

Einn misskilningur sem við verðum að hreinsa strax er að /proc skráin er EKKI raunverulegt skráarkerfi, í skilningi hugtaksins. Það er sýndarskráakerfi. Inni í procfs eru upplýsingar um ferla og aðrar kerfisupplýsingar. Það er varpað á /proc og sett upp við ræsingu.

Fyrst skulum við fara inn í /proc möppuna og skoða:

# cd /proc

Það fyrsta sem þú munt taka eftir er að það eru nokkrar kunnuglegar hljómandi skrár og síðan fullt af númeruðum möppum. Töluðu möppurnar tákna ferla, betur þekkt sem PID, og innan þeirra skipun sem tekur þá. Skrárnar innihalda kerfisupplýsingar eins og minni (meminfo), CPU upplýsingar (cpuinfo) og tiltæk skráarkerfi.

Lestu líka:  Linux ókeypis skipun til að athuga líkamlegt minni og skipta um minni

Við skulum kíkja á eina af skránum fyrst:

# cat /proc/meminfo

sem skilar einhverju svipuðu þessu:

MemTotal:         604340 kB
MemFree:           54240 kB
Buffers:           18700 kB
Cached:           369020 kB
SwapCached:            0 kB
Active:           312556 kB
Inactive:         164856 kB
Active(anon):      89744 kB
Inactive(anon):      360 kB
Active(file):     222812 kB
Inactive(file):   164496 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         89724 kB
Mapped:            18012 kB
Shmem:               412 kB
Slab:              50104 kB
SReclaimable:      40224 kB
...

Eins og þú sérð inniheldur /proc/meminfo fullt af upplýsingum um minni kerfisins þíns, þar á meðal heildarmagnið sem er tiltækt (í kb) og magnið sem er ókeypis á efstu tveimur línunum.

Að keyra cat skipunina á einhverri af skránum í /proc mun gefa út innihald þeirra. Upplýsingar um hvaða skrár sem er eru fáanlegar á mannasíðunni með því að keyra:

# man 5 /proc/<filename>

Ég mun gefa þér fljótlega yfirlit yfir skrárnar/proc:

  1. /proc/cmdline – Kernel skipanalínu upplýsingar.
  2. /proc/console – Upplýsingar um núverandi leikjatölvur, þar á meðal tty.
  3. /proc/devices – Tækjareklar sem eru stilltir fyrir keyrandi kjarna.
  4. /proc/dma – Upplýsingar um núverandi DMA rásir.
  5. /proc/fb – Framebuffer tæki.
  6. /proc/filesystems – Núverandi skráarkerfi studd af kjarnanum.
  7. /proc/iomem – Núverandi kerfisminniskort fyrir tæki.
  8. /proc/ioports – Skráð hafnarsvæði fyrir inntaksúttakssamskipti við tæki.
  9. /proc/loadavg – Meðaltal álags kerfis.
  10. /proc/locks – Skrár sem nú eru læstar af kjarna.
  11. /proc/meminfo – Upplýsingar um kerfisminni (sjá dæmi að ofan).
  12. /proc/misc – Ýmsir ökumenn skráðir fyrir ýmis helstu tæki.
  13. /proc/modules – Kjarnaeiningar sem nú eru hlaðnar.
  14. /proc/mounts – Listi yfir allar festingar sem kerfið notar.
  15. /proc/partitions – Ítarlegar upplýsingar um skipting sem eru í boði fyrir kerfið.
  16. /proc/pci – Upplýsingar um hvert PCI tæki.
  17. /proc/stat – Skrá eða ýmis tölfræði geymd frá síðustu endurræsingu.
  18. /proc/swap – Upplýsingar um skiptirými.
  19. /proc/uptime – Upplýsingar um spenntur (í sekúndum).
  20. /proc/version – Kjarnaútgáfa, gcc útgáfa og Linux dreifing uppsett.

Í númeruðum möppum /proc finnurðu nokkrar skrár og tengla. Mundu að tölur þessara möppu eru í samræmi við PID skipunarinnar sem keyrt er innan þeirra. Við skulum nota dæmi. Á kerfinu mínu er möppuheiti /proc/12:

# cd /proc/12
# ls
attr        coredump_filter  io         mounts      oom_score_adj  smaps    wchan
autogroup   cpuset           latency    mountstats  pagemap        stack
auxv        cwd              limits     net         personality    stat
cgroup      environ          loginuid   ns          root           statm
clear_refs  exe              maps       numa_maps   sched          status
cmdline     fd               mem        oom_adj     schedstat      syscall
comm        fdinfo           mountinfo  oom_score   sessionid      task

Ef ég hleyp:

# cat /proc/12/status

Ég fæ eftirfarandi:

Name:	xenwatch
State:	S (sleeping)
Tgid:	12
Pid:	12
PPid:	2
TracerPid:	0
Uid:	0	0	0	0
Gid:	0	0	0	0
FDSize:	64
Groups:
Threads:	1
SigQ:	1/4592
SigPnd:	0000000000000000
ShdPnd:	0000000000000000
SigBlk:	0000000000000000
SigIgn:	ffffffffffffffff
SigCgt:	0000000000000000
CapInh:	0000000000000000
CapPrm:	ffffffffffffffff
CapEff:	ffffffffffffffff
CapBnd:	ffffffffffffffff
Cpus_allowed:	1
Cpus_allowed_list:	0
Mems_allowed:	00000000,00000001
Mems_allowed_list:	0
voluntary_ctxt_switches:	84
nonvoluntary_ctxt_switches:	0

Svo, hvað þýðir þetta? Jæja, mikilvægi hlutinn er efst. Við getum séð af stöðuskránni að þetta ferli tilheyrir xenwatch. Núverandi ástand þess er sofandi og auðkenni ferlisins er 12, augljóslega. Við getum líka séð hver er að keyra þetta, þar sem UID og GID eru 0, sem gefur til kynna að þetta ferli tilheyri rótarnotandanum.

Í hvaða númeruðu möppu sem er muntu hafa svipaða skráaruppbyggingu. Þeir mikilvægustu, og lýsingar þeirra, eru sem hér segir:

  1. cmdline – skipanalína ferlisins
  2. umhverfi – umhverfisbreytur
  3. fd – skráarlýsingar
  4. takmörk – inniheldur upplýsingar um takmörk ferlisins
  5. festingar – tengdar upplýsingar

Þú munt einnig taka eftir fjölda tengla í númeruðu skránni:

  1. cwd – tengill á núverandi vinnumöppu ferlisins
  2. exe – hlekkur á executable ferlisins
  3. rót – hlekkur á vinnuskrá ferlisins

Þetta ætti að koma þér af stað með að kynna þér /proc skrána. Það ætti einnig að veita innsýn í hvernig fjöldi skipana fá upplýsingar sínar, svo sem spenntur, lsof, mount og ps, svo eitthvað sé nefnt.