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:
- /proc/cmdline - Taarifa ya mstari wa amri ya Kernel.
- /proc/console - Taarifa kuhusu viweko vya sasa ikijumuisha tty.
- /proc/devices - Viendeshi vya kifaa vimesanidiwa kwa sasa kwa kernel inayoendesha.
- /proc/dma – Maelezo kuhusu chaneli za sasa za DMA.
- /proc/fb - Vifaa vya Framebuffer.
- /proc/filesystems - Mifumo ya sasa ya faili inayotumika na kernel.
- /proc/iomem - Ramani ya sasa ya kumbukumbu ya mfumo kwa vifaa.
- /proc/ioports - Maeneo ya bandari yaliyosajiliwa kwa mawasiliano ya pato la kifaa na kifaa.
- /proc/loadavg - Wastani wa upakiaji wa mfumo.
- /proc/locks - Faili zimefungwa kwa sasa na kernel.
- /proc/meminfo – Taarifa kuhusu kumbukumbu ya mfumo (tazama mfano hapo juu).
- /proc/misc - Viendeshaji Nyingine vilivyosajiliwa kwa ajili ya vifaa vingine vikuu.
- /proc/modules - moduli za kernel zinazopakiwa kwa sasa.
- /proc/mounts - Orodha ya vipachiko vyote vinavyotumiwa na mfumo.
- /proc/partitions - Maelezo ya kina kuhusu sehemu zinazopatikana kwenye mfumo.
- /proc/pci – Taarifa kuhusu kila kifaa cha PCI.
- /proc/stat - Rekodi au takwimu mbalimbali zilizohifadhiwa kutoka kuwashwa upya mara ya mwisho.
- /proc/swap - Taarifa kuhusu nafasi ya kubadilishana.
- /proc/uptime - Taarifa ya muda (kwa sekunde).
- /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.
- cmdline - mstari wa amri wa mchakato
- mazingira - vigezo vya mazingira
- fd - maelezo ya faili
- mipaka - ina taarifa kuhusu mipaka ya mchakato
- vipandikizi - taarifa zinazohusiana
Pia utagundua idadi ya viungo kwenye saraka iliyohesabiwa:
- cwd – kiungo cha saraka ya kazi ya sasa ya mchakato
- exe - kiungo cha utekelezaji wa mchakato
- 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.