Linux-ൽ /proc ഫയൽ സിസ്റ്റം പര്യവേക്ഷണം ചെയ്യുന്നു


ഇന്ന്, നമ്മൾ /proc ഡയറക്uടറിയുടെ ഉള്ളിലേക്ക് നോക്കുകയും അതുമായി ഒരു പരിചയം വളർത്തിയെടുക്കുകയും ചെയ്യും. /proc ഡയറക്uടറി എല്ലാ ലിനക്uസ് സിസ്റ്റങ്ങളിലും ഉണ്ട്, സ്വാദും ആർക്കിടെക്ചറും പരിഗണിക്കാതെ.

നാം ഉടനടി മായ്uക്കേണ്ട ഒരു തെറ്റിദ്ധാരണയാണ് /proc ഡയറക്uടറി ഈ പദത്തിന്റെ അർത്ഥത്തിൽ ഒരു യഥാർത്ഥ ഫയൽ സിസ്റ്റം അല്ല എന്നതാണ്. ഇതൊരു വെർച്വൽ ഫയൽ സിസ്റ്റമാണ്. പ്രോസസുകളെക്കുറിച്ചുള്ള വിവരങ്ങളും മറ്റ് സിസ്റ്റം വിവരങ്ങളും പ്രോസിഫുകളിൽ അടങ്ങിയിരിക്കുന്നു. ഇത് /proc-ലേക്ക് മാപ്പ് ചെയ്യുകയും ബൂട്ട് സമയത്ത് മൌണ്ട് ചെയ്യുകയും ചെയ്യുന്നു.

ആദ്യം, നമുക്ക് /proc ഡയറക്ടറിയിൽ പ്രവേശിച്ച് ചുറ്റും നോക്കാം:

# cd /proc

നിങ്ങൾ ആദ്യം ശ്രദ്ധിക്കുന്നത് പരിചിതമായ ചില ശബ്uദ ഫയലുകളും തുടർന്ന് ഒരു കൂട്ടം അക്കമിട്ട ഡയറക്uടറികളും ഉണ്ടെന്നതാണ്. അക്കമിട്ട ഡയറക്uടറികൾ PID എന്നറിയപ്പെടുന്ന പ്രക്രിയകളെ പ്രതിനിധീകരിക്കുന്നു, അവയ്uക്കുള്ളിൽ അവ ഉൾക്കൊള്ളുന്ന ഒരു കമാൻഡ്. മെമ്മറി (മെമിൻഫോ), സിപിയു വിവരങ്ങൾ (സിപിയുഇൻഫോ), ലഭ്യമായ ഫയൽസിസ്റ്റംസ് തുടങ്ങിയ സിസ്റ്റം വിവരങ്ങൾ ഫയലുകളിൽ അടങ്ങിയിരിക്കുന്നു.

ഇതും വായിക്കുക:  ഫിസിക്കൽ മെമ്മറിയും സ്വാപ്പ് മെമ്മറിയും പരിശോധിക്കാനുള്ള 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-ൽ നിങ്ങളുടെ സിസ്റ്റത്തിന്റെ മെമ്മറിയെക്കുറിച്ചുള്ള ഒരു കൂട്ടം വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു, അതിൽ ലഭ്യമായ ആകെ തുകയും (കെബിയിൽ) മുകളിലെ രണ്ട് വരികളിലെ സൗജന്യ തുകയും ഉൾപ്പെടുന്നു.

/proc-ലെ ഏതെങ്കിലും ഫയലുകളിൽ cat കമാൻഡ് പ്രവർത്തിപ്പിക്കുന്നത് അവയുടെ ഉള്ളടക്കങ്ങൾ ഔട്ട്പുട്ട് ചെയ്യും. പ്രവർത്തിപ്പിക്കുന്നതിലൂടെ ഏതെങ്കിലും ഫയലുകളെ കുറിച്ചുള്ള വിവരങ്ങൾ മാൻ പേജിൽ ലഭ്യമാണ്:

# man 5 /proc/<filename>

/proc-ന്റെ ഫയലുകളിൽ ഞാൻ നിങ്ങൾക്ക് ദ്രുത അവലോകനം നൽകും:

  1. /proc/cmdline – കേർണൽ കമാൻഡ് ലൈൻ വിവരങ്ങൾ.
  2. /proc/console – tty ഉൾപ്പെടെയുള്ള നിലവിലെ കൺസോളുകളെക്കുറിച്ചുള്ള വിവരങ്ങൾ.
  3. /proc/devices – നിലവിൽ പ്രവർത്തിക്കുന്ന കേർണലിനായി കോൺഫിഗർ ചെയ്uതിരിക്കുന്ന ഉപകരണ ഡ്രൈവറുകൾ.
  4. /proc/dma – നിലവിലെ DMA ചാനലുകളെ കുറിച്ചുള്ള വിവരങ്ങൾ.
  5. /proc/fb – ഫ്രെയിംബഫർ ഉപകരണങ്ങൾ.
  6. /proc/filesystems – കേർണൽ പിന്തുണയ്ക്കുന്ന നിലവിലെ ഫയൽസിസ്റ്റം.
  7. /proc/iomem – ഉപകരണങ്ങൾക്കുള്ള നിലവിലെ സിസ്റ്റം മെമ്മറി മാപ്പ്.
  8. /proc/ioports – ഉപകരണവുമായുള്ള ഇൻപുട്ട് ഔട്ട്uപുട്ട് ആശയവിനിമയത്തിനായി രജിസ്റ്റർ ചെയ്ത പോർട്ട് മേഖലകൾ.
  9. /proc/loadavg – സിസ്റ്റം ലോഡ് ശരാശരി.
  10. /proc/locks – നിലവിൽ കേർണൽ ലോക്ക് ചെയ്ത ഫയലുകൾ.
  11. /proc/meminfo – സിസ്റ്റം മെമ്മറിയെക്കുറിച്ചുള്ള വിവരങ്ങൾ (മുകളിലുള്ള ഉദാഹരണം കാണുക).
  12. /proc/misc - വിവിധ പ്രധാന ഉപകരണത്തിനായി രജിസ്റ്റർ ചെയ്തിട്ടുള്ള വിവിധ ഡ്രൈവറുകൾ.
  13. /proc/modules – നിലവിൽ ലോഡ് ചെയ്ത കേർണൽ മൊഡ്യൂളുകൾ.
  14. /proc/mounts – സിസ്റ്റം ഉപയോഗിക്കുന്ന എല്ലാ മൗണ്ടുകളുടെയും ലിസ്റ്റ്.
  15. /proc/partitions – സിസ്റ്റത്തിന് ലഭ്യമായ പാർട്ടീഷനുകളെക്കുറിച്ചുള്ള വിശദമായ വിവരങ്ങൾ.
  16. /proc/pci – ഓരോ പിസിഐ ഉപകരണത്തെയും കുറിച്ചുള്ള വിവരങ്ങൾ.
  17. /proc/stat – കഴിഞ്ഞ റീബൂട്ടിൽ നിന്ന് റെക്കോർഡ് അല്ലെങ്കിൽ വിവിധ സ്ഥിതിവിവരക്കണക്കുകൾ സൂക്ഷിച്ചു.
  18. /proc/swap – സ്വാപ്പ് സ്പേസിനെ കുറിച്ചുള്ള വിവരങ്ങൾ.
  19. /proc/uptime – പ്രവർത്തന സമയ വിവരങ്ങൾ (സെക്കൻഡിൽ).
  20. /proc/version – കേർണൽ പതിപ്പ്, gcc പതിപ്പ്, ലിനക്സ് വിതരണം എന്നിവ ഇൻസ്റ്റാൾ ചെയ്തു.

/proc-ന്റെ നമ്പറുള്ള ഡയറക്uടറികളിൽ നിങ്ങൾ കുറച്ച് ഫയലുകളും ലിങ്കുകളും കണ്ടെത്തും. ഈ ഡയറക്uടറികളുടെ നമ്പരുകൾ അവയ്uക്കുള്ളിൽ പ്രവർത്തിക്കുന്ന കമാൻഡിന്റെ 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-ന്റേതാണെന്ന് സ്റ്റാറ്റസ് ഫയലിൽ നിന്ന് നമുക്ക് കാണാൻ കഴിയും. അതിന്റെ നിലവിലെ അവസ്ഥ ഉറങ്ങുകയാണ്, അതിന്റെ പ്രോസസ്സ് ഐഡി 12 ആണ്, വ്യക്തമായും. UID ഉം GID ഉം 0 ആയതിനാൽ ആരാണ് ഇത് റൺ ചെയ്യുന്നതെന്ന് നമുക്ക് കാണാൻ കഴിയും, ഈ പ്രക്രിയ റൂട്ട് ഉപയോക്താവിന്റെതാണെന്ന് സൂചിപ്പിക്കുന്നു.

അക്കമിട്ട ഏത് ഡയറക്ടറിയിലും, നിങ്ങൾക്ക് സമാനമായ ഒരു ഫയൽ ഘടന ഉണ്ടായിരിക്കും. ഏറ്റവും പ്രധാനപ്പെട്ടവയും അവയുടെ വിവരണങ്ങളും ഇപ്രകാരമാണ്:

  1. cmdline – പ്രക്രിയയുടെ കമാൻഡ് ലൈൻ
  2. പരിസ്ഥിതി - പരിസ്ഥിതി വേരിയബിളുകൾ
  3. fd – ഫയൽ വിവരണങ്ങൾ
  4. പരിധികൾ - പ്രക്രിയയുടെ പരിധികളെക്കുറിച്ചുള്ള വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു
  5. മൌണ്ട്സ് – ബന്ധപ്പെട്ട വിവരങ്ങൾ

അക്കമിട്ട ഡയറക്uടറിയിലെ നിരവധി ലിങ്കുകളും നിങ്ങൾ ശ്രദ്ധിക്കും:

  1. cwd - പ്രോസസ്സിന്റെ നിലവിലെ വർക്കിംഗ് ഡയറക്ടറിയിലേക്കുള്ള ഒരു ലിങ്ക്
  2. exe - പ്രക്രിയയുടെ എക്സിക്യൂട്ടബിളിലേക്കുള്ള ലിങ്ക്
  3. റൂട്ട് - പ്രോസസ്സിന്റെ വർക്ക് ഡയറക്uടറിയിലേക്കുള്ള ലിങ്ക്

/proc ഡയറക്uടറിയുമായി പരിചയപ്പെടാൻ ഇത് നിങ്ങളെ തുടങ്ങും. കുറച്ച് പേരിടാൻ, അപ്uടൈം, lsof, മൗണ്ട്, ps എന്നിവ പോലുള്ള നിരവധി കമാൻഡുകൾ അവയുടെ വിവരങ്ങൾ എങ്ങനെ നേടുന്നു എന്നതിനെക്കുറിച്ചുള്ള ഉൾക്കാഴ്ചയും ഇത് നൽകണം.