Kuchunguza /proc Mfumo wa Faili katika Linux


Leo, tutaangalia ndani ya /proc saraka na kukuza ujuzi nayo. Saraka ya /proc iko kwenye mifumo yote ya Linux, bila kujali ladha au usanifu.

Dhana moja potofu ambayo lazima tuiondoe mara moja ni kwamba saraka ya /proc SI Mfumo halisi wa Faili, kwa maana ya neno hilo. Ni Mfumo wa Faili Pekee. Zilizomo ndani ya procfs ni taarifa kuhusu michakato na taarifa nyingine za mfumo. Imechorwa kwa /proc na kuwekwa wakati wa kuwasha.

Kwanza, wacha tuingie kwenye /proc saraka na tuangalie pande zote:

# cd /proc

Jambo la kwanza ambalo utaona ni kwamba kuna faili za sauti zinazojulikana, na kisha rundo zima la saraka zilizohesabiwa. Saraka zilizo na nambari zinawakilisha michakato, inayojulikana zaidi kama PIDs, na ndani yake, amri ambayo inazichukua. Faili zina maelezo ya mfumo kama vile kumbukumbu (meminfo), maelezo ya CPU (cpuinfo), na mifumo ya faili inayopatikana.

Soma Pia:  Linux Amri Isiyolipishwa ya Kuangalia Kumbukumbu ya Kimwili na Kubadilishana Kumbukumbu

Hebu tuangalie moja ya faili kwanza:

# cat /proc/meminfo

ambayo inarudisha kitu sawa na hiki:

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

Kama unavyoona, /proc/meminfo ina rundo la taarifa kuhusu kumbukumbu ya mfumo wako, ikijumuisha jumla ya kiasi kinachopatikana (katika kb) na kiasi kisicholipishwa kwenye laini mbili za juu.

Kuendesha amri ya paka kwenye faili zozote kwenye /proc kutatoa yaliyomo. Taarifa kuhusu faili zozote zinapatikana kwenye ukurasa wa mtu kwa kuendesha:

# man 5 /proc/<filename>

Nitakupa muhtasari wa haraka kwenye faili za /proc:

  1. /proc/cmdline - Taarifa ya mstari wa amri ya Kernel.
  2. /proc/console - Taarifa kuhusu viweko vya sasa ikijumuisha tty.
  3. /proc/devices - Viendeshi vya kifaa vimesanidiwa kwa sasa kwa kernel inayoendesha.
  4. /proc/dma – Maelezo kuhusu chaneli za sasa za DMA.
  5. /proc/fb - Vifaa vya Framebuffer.
  6. /proc/filesystems - Mifumo ya sasa ya faili inayotumika na kernel.
  7. /proc/iomem - Ramani ya sasa ya kumbukumbu ya mfumo kwa vifaa.
  8. /proc/ioports - Maeneo ya bandari yaliyosajiliwa kwa mawasiliano ya pato la kifaa na kifaa.
  9. /proc/loadavg - Wastani wa upakiaji wa mfumo.
  10. /proc/locks - Faili zimefungwa kwa sasa na kernel.
  11. /proc/meminfo – Taarifa kuhusu kumbukumbu ya mfumo (tazama mfano hapo juu).
  12. /proc/misc - Viendeshaji Nyingine vilivyosajiliwa kwa ajili ya vifaa vingine vikuu.
  13. /proc/modules - moduli za kernel zinazopakiwa kwa sasa.
  14. /proc/mounts - Orodha ya vipachiko vyote vinavyotumiwa na mfumo.
  15. /proc/partitions - Maelezo ya kina kuhusu sehemu zinazopatikana kwenye mfumo.
  16. /proc/pci – Taarifa kuhusu kila kifaa cha PCI.
  17. /proc/stat - Rekodi au takwimu mbalimbali zilizohifadhiwa kutoka kuwashwa upya mara ya mwisho.
  18. /proc/swap - Taarifa kuhusu nafasi ya kubadilishana.
  19. /proc/uptime - Taarifa ya muda (kwa sekunde).
  20. /proc/version - Toleo la Kernel, toleo la gcc na usambazaji wa Linux umesakinishwa.

Ndani ya saraka za /proc zilizohesabiwa utapata faili na viungo vichache. Kumbuka kwamba nambari za saraka hizi zinahusiana na PID ya amri inayoendeshwa ndani yao. Hebu tumia mfano. Kwenye mfumo wangu, kuna jina la folda /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

Ikiwa nitakimbia:

# cat /proc/12/status

Napata yafuatayo:

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

Kwa hiyo, hii ina maana gani? Naam, sehemu muhimu iko juu. Tunaweza kuona kutoka kwa faili ya hali kwamba mchakato huu ni wa xenwatch. Hali yake ya sasa imelala, na kitambulisho chake cha mchakato ni 12, ni wazi. Pia tunaweza kuona ni nani anayeendesha hii, kwani UID na GID ni 0, ikionyesha kuwa mchakato huu ni wa mtumiaji wa mizizi.

Katika saraka yoyote iliyo na nambari, utakuwa na muundo sawa wa faili. Muhimu zaidi na maelezo yao ni kama ifuatavyo.

  1. cmdline - mstari wa amri wa mchakato
  2. mazingira - vigezo vya mazingira
  3. fd - maelezo ya faili
  4. mipaka - ina taarifa kuhusu mipaka ya mchakato
  5. vipandikizi - taarifa zinazohusiana

Pia utagundua idadi ya viungo kwenye saraka iliyohesabiwa:

  1. cwd – kiungo cha saraka ya kazi ya sasa ya mchakato
  2. exe - kiungo cha utekelezaji wa mchakato
  3. mzizi - kiungo kwa saraka ya kazi ya mchakato

Hii inapaswa kukufanya uanze na kujijulisha na /proc saraka. Inapaswa pia kutoa maarifa kuhusu jinsi idadi ya amri hupata maelezo yao, kama vile uptime, lsof, mount, na ps, kwa kutaja chache tu.