Entdeckt /proc Dateisystem op Linux


Haut wäerte mir e Bléck am/proc Verzeechnes kucken an e Vertraut entwéckelen. De/proc Verzeechnes ass präsent op all Linux Systemer, onofhängeg vu Goût oder Architektur.

Eng Mëssverständnis déi mir direkt musse klären ass datt den/proc Verzeichnis NET e richtege Dateiesystem ass, am Sënn vum Begrëff. Et ass e virtuelle Dateiesystem. Enthält an de Procfs sinn Informatioun iwwer Prozesser an aner Systeminformatioun. Et gëtt op /proc mapéiert a montéiert beim Bootzäit.

Als éischt, loosst eis an den/proc Verzeechnes kommen a kucke ronderëm:

# cd /proc

Déi éischt Saach déi Dir bemierkt ass datt et e puer vertraute Klangdateien sinn, an dann eng ganz Rëtsch vun nummeréierten Verzeichnisser. Déi nummeréiert Verzeechnes representéieren Prozesser, besser bekannt als PIDs, a bannent hinnen e Kommando deen se besetzt. D'Dateien enthalen Systeminformatioun wéi Erënnerung (Meminfo), CPU Informatioun (cpuinfo), a verfügbare Dateiesystemer.

Liest och: Linux Gratis Kommando fir kierperlecht Gedächtnis z'iwwerpréiwen an Erënnerung ze tauschen

Loosst eis als éischt ee vun de Dateien kucken:

# cat /proc/meminfo

wat eppes ähnleches zu dësem zréckkënnt:

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

Wéi Dir gesitt, enthält /proc/meminfo eng Rëtsch Informatioun iwwer d'Erënnerung vun Ärem System, dorënner de Gesamtbetrag verfügbar (a kb) an de Betrag gratis op den Top zwou Zeilen.

Wann Dir de Cat Kommando op eng vun de Dateien an/proc ausféiert, gëtt hiren Inhalt erausginn. Informatioun iwwer all Dateien ass verfügbar op der Man-Säit andeems Dir leeft:

# man 5 /proc/<filename>

Ech ginn Iech e séieren Iwwerbléck iwwer/proc Dateien:

  1. /proc/cmdline – Kernel Kommandozeilinformatioun.
  2. /proc/console - Informatioun iwwer aktuell Konsolen inklusiv tty.
  3. /proc/devices - Gerät Treiber déi momentan fir de lafende Kernel konfiguréiert sinn.
  4. /proc/dma - Info iwwer aktuell DMA Kanäl.
  5. /proc/fb – Framebuffer Geräter.
  6. /proc/filesystems - Aktuell Dateiesystemer ënnerstëtzt vum Kernel.
  7. /proc/iomem - Aktuell System Memory Kaart fir Apparater.
  8. /proc/ioports - Registréiert Hafenregiounen fir Input Output Kommunikatioun mam Apparat.
  9. /proc/loadavg – Duerchschnëtt vum Systembelaaschtung.
  10. /proc/locks - Dateien déi momentan vum Kernel gespaart sinn.
  11. /proc/meminfo - Info iwwer Systemspeicher (kuckt Beispill hei uewen).
  12. /proc/misc - Verschidde Chauffeuren registréiert fir verschidde grouss Apparater.
  13. /proc/modules - Aktuell gelueden Kernel Moduler.
  14. /proc/mounts - Lëscht vun alle Mounts déi vum System benotzt ginn.
  15. /proc/partitions - Detailléiert Infoen iwwer Partitionen déi am System verfügbar sinn.
  16. /proc/pci - Informatioun iwwer all PCI Apparat.
  17. /proc/stat - Rekord oder verschidde Statistike gehale vum leschte Restart.
  18. /proc/swap – Informatiounen iwwer Swap-Plaz.
  19. /proc/uptime - Uptime Informatioun (a Sekonnen).
  20. /proc/version - Kernel Versioun, gcc Versioun, a Linux Verdeelung installéiert.

An /proc's nummeréiert Verzeichnisser fannt Dir e puer Dateien a Linken. Denkt drun datt d'Zuelen vun dësen Verzeichnisser mat der PID vum Kommando korreléieren, deen an hinnen leeft. Loosst eis e Beispill benotzen. Op mengem System gëtt et en Ordnernumm /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

Wann ech lafen:

# cat /proc/12/status

Ech kréien déi folgend:

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

Also, wat heescht dat? Gutt, de wichtegen Deel ass uewen. Mir kënnen aus der Statusdatei gesinn datt dëse Prozess zu xenwatch gehéiert. Säin aktuellen Zoustand schléift, a säi Prozess ID ass 12, offensichtlech. Mir kënnen och gesinn wien dëst leeft, well UID a GID 0 sinn, wat beweist datt dëse Prozess zum Root Benotzer gehéiert.

An all nummeréiert Verzeechnes hutt Dir eng ähnlech Dateistruktur. Déi wichtegst, an hir Beschreiwunge sinn wéi follegt:

  1. cmdline - Kommandozeil vum Prozess
  2. Environnement - Ëmweltvariablen
  3. fd - Dateibeschreiwungen
  4. Limiten - enthält Informatiounen iwwer d'Limite vum Prozess
  5. Mounts - Zesummenhang Informatiounen

Dir wäert och eng Zuel vu Linken am nummeréierten Verzeechnes bemierken:

  1. cwd - e Link op den aktuellen Aarbechtsverzeichnis vum Prozess
  2. exe - Link op d'Ausféierbar vum Prozess
  3. root - Link op den Aarbechtsverzeichnis vum Prozess

Dëst sollt Iech unzefänken fir Iech mam /proc Verzeichnis vertraut ze maachen. Et sollt och Abléck ubidden wéi eng Zuel vu Kommandoen hir Informatioun kréien, sou wéi Uptime, lsof, mount, a ps, fir nëmmen e puer ze nennen.