ການ ສຳ ຫຼວດ/proc ລະບົບ File ໃນ Linux


ມື້ນີ້, ພວກເຮົາຈະເບິ່ງພາຍໃນ/proc directory ແລະພັດທະນາຄວາມຄຸ້ນເຄີຍກັບມັນ. ໄດເລກະທໍລີ/proc ແມ່ນມີຢູ່ໃນທຸກລະບົບ Linux, ບໍ່ວ່າຈະເປັນລົດຊາດຫລືສະຖາປັດຕະຍະ ກຳ.

ຄວາມເຂົ້າໃຈຜິດອັນ ໜຶ່ງ ທີ່ພວກເຮົາຕ້ອງໄດ້ແຈ້ງຂື້ນໃນທັນທີແມ່ນວ່າໄດເລກະທໍລີ/proc ບໍ່ແມ່ນລະບົບ File ທີ່ແທ້ຈິງ, ໃນຄວາມ ໝາຍ ຂອງ ຄຳ ສັບ. ມັນແມ່ນລະບົບເອກະສານ Virtual. ບັນຈຸຢູ່ພາຍໃນໂຄງການແມ່ນຂໍ້ມູນກ່ຽວກັບຂະບວນການແລະຂໍ້ມູນລະບົບອື່ນໆ. ມັນຖືກວາງແຜນໃສ່/proc ແລະຖືກຕິດຕັ້ງໃນເວລາບູດ.

ຫນ້າທໍາອິດ, ໃຫ້ເຂົ້າໄປໃນໄດເລກະທໍລີ/proc ແລະເບິ່ງປະມານ:

# cd /proc

ສິ່ງ ທຳ ອິດທີ່ທ່ານຈະສັງເກດແມ່ນວ່າມີບາງບ່ອນທີ່ມີສຽງທີ່ຄຸ້ນເຄີຍ, ແລະຫຼັງຈາກນັ້ນມີບັນດາລາຍການທີ່ຖືກນັບ. ບັນດາທິດທາງທີ່ຖືກນັບເປັນຕົວແທນຂອງຂະບວນການ, ເປັນທີ່ຮູ້ຈັກກັນດີວ່າ PIDs, ແລະພາຍໃນພວກມັນ, ຄຳ ສັ່ງທີ່ຄອບຄອງພວກມັນ. ບັນດາເອກະສານບັນຈຸຂໍ້ມູນກ່ຽວກັບລະບົບເຊັ່ນ: ໜ່ວຍ ຄວາມ ຈຳ (meminfo), ຂໍ້ມູນ CPU (cpuinfo), ແລະລະບົບແຟ້ມເອກະສານທີ່ມີ.

ອ່ານອີກ: Linux ຄຳ ສັ່ງຟຣີເພື່ອກວດສອບຄວາມ ຈຳ ທາງກາຍແລະຄວາມ ຈຳ ສັບປ່ຽນ

ລອງເບິ່ງເອກະສານ ໜຶ່ງ ກ່ອນ:

# cat /proc/meminfo

ເຊິ່ງສົ່ງຄືນສິ່ງທີ່ຄ້າຍຄືກັບນີ້:

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

ດັ່ງທີ່ທ່ານສາມາດເຫັນໄດ້,/proc/meminfo ມີຂໍ້ມູນຫຼາຍຢ່າງກ່ຽວກັບຄວາມຊົງ ຈຳ ຂອງລະບົບຂອງທ່ານ, ລວມທັງ ຈຳ ນວນທັງ ໝົດ ທີ່ມີ (ເປັນ kb) ແລະ ຈຳ ນວນເງິນທີ່ບໍ່ເສຍຄ່າໃນສອງສາຍເທິງ.

ການແລ່ນ ຄຳ ສັ່ງແມວໃສ່ທຸກໆເອກະສານທີ່ຢູ່ໃນ/proc ຈະສົ່ງອອກເນື້ອຫາຂອງມັນ. ຂໍ້ມູນກ່ຽວກັບເອກະສານໃດໆກໍ່ມີຢູ່ໃນ ໜ້າ ຜູ້ຊາຍໂດຍການແລ່ນ:

# man 5 /proc/<filename>

ຂ້ອຍຈະໃຫ້ໄຟລ໌/proc ຂອງທ່ານໄວໆນີ້:

<

  • /proc/cmdline - ຂໍ້ມູນເສັ້ນ ຄຳ ສັ່ງ Kernel.
  • /proc/console - ຂໍ້ມູນກ່ຽວກັບເຄື່ອງຈັກປັດຈຸບັນລວມທັງ tty.
  • /proc/devices - ປັດຈຸບັນຄົນຂັບອຸປະກອນໄດ້ຕັ້ງຄ່າ ສຳ ລັບແກ່ນທີ່ ກຳ ລັງແລ່ນຢູ່.
  • /proc/dma - ຂໍ້ມູນກ່ຽວກັບຊ່ອງທາງ DMA ປັດຈຸບັນ.
  • /proc/fb - ອຸປະກອນ Framebuffer.
  • /proc/filesystems - ລະບົບແຟ້ມເອກະສານທີ່ຮອງຮັບໂດຍ kernel.
  • /proc/iomem - ແຜນທີ່ຄວາມຊົງ ຈຳ ຂອງລະບົບປັດຈຸບັນ ສຳ ລັບອຸປະກອນ.
  • /proc/ioports - ທີ່ Port ລົງທະບຽນ ສຳ ລັບການສື່ສານຜົນຜະລິດເຂົ້າກັບອຸປະກອນ.
  • /proc/loadavg - ຄ່າສະເລ່ຍຂອງລະບົບ.
  • /proc/locks - ເອກະສານທີ່ຖືກລັອກໂດຍ kernel.
  • /proc/meminfo - ຂໍ້ມູນກ່ຽວກັບຄວາມຊົງ ຈຳ ຂອງລະບົບ (ເບິ່ງຕົວຢ່າງຂ້າງເທິງ).
  • /proc/misc - ຄົນຂັບລົດທີ່ຫຼາກຫຼາຍໄດ້ລົງທະບຽນ ສຳ ລັບອຸປະກອນທີ່ ສຳ ຄັນ.
  • /proc/modules - ປະຈຸບັນມີໂມດູນ kernel ທີ່ຖືກໂຫລດ.
  • /proc/mounts - ລາຍຊື່ຂອງການຕິດຕັ້ງທັງ ໝົດ ທີ່ຢູ່ໃນລະບົບ.
  • /proc/partitions - ຂໍ້ມູນລະອຽດກ່ຽວກັບການແບ່ງປັນທີ່ມີໃຫ້ແກ່ລະບົບ.
  • /proc/pci - ຂໍ້ມູນກ່ຽວກັບທຸກໆອຸປະກອນ PCI.
  • /proc/stat - ບັນທຶກຫຼືສະຖິຕິຕ່າງໆທີ່ເກັບໄວ້ຈາກການເລີ່ມຕົ້ນ ໃໝ່.
  • /proc/swap - ຂໍ້ມູນກ່ຽວກັບພື້ນທີ່ແລກປ່ຽນ.
  • /proc/uptime - ຂໍ້ມູນເວລາ (ໃນວິນາທີ).
  • /proc/version - ລຸ້ນ Kernel, gcc version ແລະຕິດຕັ້ງການແຈກຈ່າຍ Linux.
  • ບັນດາລາຍຊື່ພາຍໃນ/ບັນຊີລາຍຊື່ຂອງຜະລິດຕະພັນທ່ານຈະພົບກັບເອກະສານແລະລິງ. ຈື່ໄວ້ວ່າຕົວເລກຂອງໄດເລກະທໍລີເຫຼົ່ານີ້ແມ່ນກ່ຽວຂ້ອງກັບ PID ຂອງ ຄຳ ສັ່ງທີ່ ກຳ ລັງ ດຳ ເນີນຢູ່ພາຍໃນພວກມັນ. ໃຫ້ໃຊ້ຕົວຢ່າງ. ໃນລະບົບຂອງຂ້ອຍມີຊື່ໂຟນເດີ/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

    ຖ້າຂ້ອຍແລ່ນ:

    # cat /proc/12/status

    ຂ້ອຍໄດ້ຮັບສິ່ງຕໍ່ໄປນີ້:

    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

    ສະນັ້ນ, ມັນ ໝາຍ ຄວາມວ່າແນວໃດ? ດີ, ສ່ວນທີ່ ສຳ ຄັນແມ່ນຢູ່ເທິງສຸດ. ພວກເຮົາສາມາດເບິ່ງຈາກເອກະສານສະຖານະພາບທີ່ຂະບວນການນີ້ເປັນຂອງ xenwatch. ສະຖານະການປະຈຸບັນຂອງມັນ ກຳ ລັງນອນຫຼັບ, ແລະ ID ຂອງຂະບວນການແມ່ນ 12, ແນ່ນອນ. ພວກເຮົາຍັງສາມາດເຫັນຜູ້ທີ່ ກຳ ລັງ ດຳ ເນີນການນີ້, ເພາະວ່າ UID ແລະ GID ແມ່ນ 0, ເຊິ່ງສະແດງໃຫ້ເຫັນວ່າຂະບວນການນີ້ເປັນຂອງຜູ້ ນຳ ໃຊ້ຮາກ.

    ໃນບັນດາໄດເລກະທໍລີທີ່ມີຕົວເລກໃດໆ, ທ່ານຈະມີໂຄງສ້າງແຟ້ມທີ່ຄ້າຍຄືກັນ. ສິ່ງທີ່ ສຳ ຄັນທີ່ສຸດ, ແລະ ຄຳ ອະທິບາຍຂອງມັນແມ່ນດັ່ງຕໍ່ໄປນີ້:

    <

  • cmdline - ເສັ້ນ ຄຳ ສັ່ງຂອງຂັ້ນຕອນ
  • ສະພາບແວດລ້ອມ - ຕົວປ່ຽນແປງສິ່ງແວດລ້ອມ
  • fd - ຜູ້ອະທິບາຍແຟ້ມເອກະສານ
  • ຂໍ້ ຈຳ ກັດ
  • - ມີຂໍ້ມູນກ່ຽວກັບຂໍ້ ຈຳ ກັດຂອງຂັ້ນຕອນ
  • ຂໍ້ມູນຂ່າວສານທີ່ກ່ຽວຂ້ອງ
  • ນອກນັ້ນທ່ານຍັງຈະສັງເກດເຫັນຈໍານວນລິ້ງຢູ່ໃນໄດເລກະທໍລີທີ່ມີຕົວເລກ:

    <

  • cwd - ການເຊື່ອມຕໍ່ກັບໄດເລກະທໍລີເຮັດວຽກຂອງຂະບວນການໃນປະຈຸບັນ
  • exe - ເຊື່ອມຕໍ່ກັບການ ດຳ ເນີນງານຂອງຂັ້ນຕອນ
  • ຮາກ - ເຊື່ອມຕໍ່ກັບໄດເລກະທໍລີເຮັດວຽກຂອງຂັ້ນຕອນ
  • ສິ່ງນີ້ຄວນເຮັດໃຫ້ທ່ານເລີ່ມຕົ້ນຄຸ້ນເຄີຍກັບໄດເລກະທໍລີ/proc. ມັນຍັງຄວນໃຫ້ຄວາມເຂົ້າໃຈກ່ຽວກັບວິທີການ ຈຳ ນວນ ຄຳ ສັ່ງທີ່ໄດ້ຮັບຂໍ້ມູນຂອງພວກເຂົາ, ເຊັ່ນວ່າເວລາຂຶ້ນ, lsof, mount, ແລະ ps, ພຽງແຕ່ຕັ້ງຊື່ໃຫ້ ຈຳ ນວນ ໜຶ່ງ.