/ Proc-failisüsteemi uurimine Linuxis


Täna vaatame/proc kataloogi ja tutvume sellega. Kataloog/proc on olemas kõigis Linuxi süsteemides, olenemata maitsest ja arhitektuurist.

Üks väärarusaam, mille peame kohe selgeks tegema, on see, et kataloog/proc ei ole selle termini tähenduses tõeline failisüsteem. See on virtuaalne failisüsteem. Procfs sisaldab teavet protsesside kohta ja muud süsteemiteavet. See on kaardistatud/proc ja kaardistatud alglaadimise ajal.

Esmalt lubage pääseda kataloogi/proc ja vaadata ringi:

# cd /proc

Esimene asi, mida märkate, on see, et seal on mõned tuttavad helifailid ja seejärel terve hulk nummerdatud katalooge. Nummerdatud kataloogid tähistavad protsesse, mida tuntakse paremini kui PID-sid, ja nende sees käsk, mis neid hõivab. Failid sisaldavad süsteemi teavet, näiteks mälu (meminfo), protsessori teavet (cpuinfo) ja saadaolevaid failisüsteeme.

Loe ka: Linuxi vaba käsk füüsilise mälu kontrollimiseks ja mälu vahetamiseks

Vaatame kõigepealt ühte failidest:

# cat /proc/meminfo

mis tagastab midagi sarnast:

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
...

Nagu näete, sisaldab/proc/meminfo hulga teavet teie süsteemi mälu kohta, sealhulgas kogu saadaolev kogus (kb-des) ja ülemisel kahel real vaba summa.

Käsu kass käivitamine mis tahes/proc failis/proc väljastab nende sisu. Teave mis tahes failide kohta on saadaval man-lehel, käivitades:

# man 5 /proc/<filename>

Annan teile/proci failides kiire ülevaate:

  1. /proc/cmdline - kerneli käsurea teave.
  2. /proc/console - teave praeguste konsoolide, sealhulgas tty kohta.
  3. /proc/devices - töötava tuuma jaoks praegu seadistatud seadmedraiverid.
  4. /proc/dma - teave praeguste DMA kanalite kohta.
  5. /proc/fb - kaadripuhvriseadmed.
  6. /proc/filesystems - tuum toetab praeguseid failisüsteeme.
  7. /proc/iomem - seadmete praegune süsteemimälukaart.
  8. /proc/ioports - registreeritud pordipiirkonnad sisendväljundi suhtlemiseks seadmega.
  9. /proc/loadavg - süsteemi koormuse keskmine.
  10. /proc/locks - tuuma poolt praegu lukustatud failid.
  11. /proc/meminfo - teave süsteemimälu kohta (vt ülaltoodud näidet).
  12. /proc/misc - mitmesugused draiverid, mis on registreeritud mitmesuguse suurema seadme jaoks.
  13. /proc/modules - Praegu laaditud kernelmoodulid.
  14. /proc/mounts - kõigi süsteemide kaupa kasutatavate kinnituste loend.
  15. /proc/partitions - üksikasjalik teave süsteemile saadaolevate partitsioonide kohta.
  16. /proc/pci - teave iga PCI-seadme kohta.
  17. /proc/stat - rekord või mitmesugune statistika, mida hoitakse viimasest taaskäivitamisest.
  18. /proc/swap - teave ruumi vahetamise kohta.
  19. /proc/uptime - teave tööaja kohta (sekundites).
  20. /proc/version - installitud kerneli versioon, gcc versioon ja Linuxi levitamine.

/ Proci nummerdatud kataloogidest leiate mõned failid ja lingid. Pidage meeles, et nende kataloogide numbrid korreleeruvad neis käivitatava käsu PID-ga. Kasutagem näidet. Minu süsteemis on kausta nimi/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

Kui ma jooksen:

# cat /proc/12/status

Ma saan järgmise:

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

Mida see siis tähendab? Noh, oluline osa on tipus. Olekufailist näeme, et see protsess kuulub xenwatchile. Selle praegune olek on unes ja protsessi ID on ilmselgelt 12. Samuti näeme, kes seda käivitab, kuna UID ja GID on 0, mis näitab, et see protsess kuulub juurkasutajale.

Mis tahes nummerdatud kataloogis on teil sarnane failistruktuur. Kõige olulisemad ja nende kirjeldused on järgmised:

  1. cmdline - protsessi käsurida
  2. keskkond - keskkonnamuutujad
  3. fd - failikirjeldajad
  4. piirid - sisaldab teavet protsessi piiride kohta
  5. kinnitustega seotud teave

Samuti märkate nummerdatud kataloogis mitmeid linke:

  1. cwd - link protsessi praegusele töökataloogile
  2. exe - link protsessi käivitatava failiga
  3. juur - link protsessi töökataloogi

See peaks alustama kataloogi/proc tutvumist. Samuti peaks see andma ülevaate, kuidas paljud käsud saavad teavet, näiteks uptime, lsof, mount ja ps, et nimetada vaid mõnda.