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:
- /proc/cmdline – Kernel skipanalínu upplýsingar.
- /proc/console – Upplýsingar um núverandi leikjatölvur, þar á meðal tty.
- /proc/devices – Tækjareklar sem eru stilltir fyrir keyrandi kjarna.
- /proc/dma – Upplýsingar um núverandi DMA rásir.
- /proc/fb – Framebuffer tæki.
- /proc/filesystems – Núverandi skráarkerfi studd af kjarnanum.
- /proc/iomem – Núverandi kerfisminniskort fyrir tæki.
- /proc/ioports – Skráð hafnarsvæði fyrir inntaksúttakssamskipti við tæki.
- /proc/loadavg – Meðaltal álags kerfis.
- /proc/locks – Skrár sem nú eru læstar af kjarna.
- /proc/meminfo – Upplýsingar um kerfisminni (sjá dæmi að ofan).
- /proc/misc – Ýmsir ökumenn skráðir fyrir ýmis helstu tæki.
- /proc/modules – Kjarnaeiningar sem nú eru hlaðnar.
- /proc/mounts – Listi yfir allar festingar sem kerfið notar.
- /proc/partitions – Ítarlegar upplýsingar um skipting sem eru í boði fyrir kerfið.
- /proc/pci – Upplýsingar um hvert PCI tæki.
- /proc/stat – Skrá eða ýmis tölfræði geymd frá síðustu endurræsingu.
- /proc/swap – Upplýsingar um skiptirými.
- /proc/uptime – Upplýsingar um spenntur (í sekúndum).
- /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:
- cmdline – skipanalína ferlisins
- umhverfi – umhverfisbreytur
- fd – skráarlýsingar
- takmörk – inniheldur upplýsingar um takmörk ferlisins
- festingar – tengdar upplýsingar
Þú munt einnig taka eftir fjölda tengla í númeruðu skránni:
- cwd – tengill á núverandi vinnumöppu ferlisins
- exe – hlekkur á executable ferlisins
- 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.