Izpētīt/proc failu sistēmu Linux
Šodien mēs ieskatīsimies/proc direktorijā un iepazīsimies ar to./Proc direktorijs atrodas visās Linux sistēmās, neatkarīgi no garšas vai arhitektūras.
Viens nepareizs uzskats, kas mums nekavējoties jānoskaidro, ir tas, ka/proc direktorijs NAV īsta failu sistēma šī termina nozīmē. Tā ir virtuālā failu sistēma. Procfs satur informāciju par procesiem un citu informāciju par sistēmu. Tas ir saistīts ar/proc un uzstādīts sāknēšanas laikā.
Pirmkārt, ļaujiet nokļūt/proc direktorijā un apskatīt:
# cd /proc
Pirmā lieta, ko pamanīsit, ir tā, ka ir daži pazīstami skanoši faili un pēc tam vesela virkne numurētu direktoriju. Numerētie direktoriji attēlo procesus, labāk zināmus kā PID, un tajos - komandu, kas tos aizņem. Faili satur tādu sistēmas informāciju kā atmiņa (meminfo), CPU informācija (cpuinfo) un pieejamās failu sistēmas.
Lasiet arī: Linux bezmaksas komanda, lai pārbaudītu fizisko atmiņu un mainītu atmiņu
Vispirms apskatīsim vienu no failiem:
# cat /proc/meminfo
kas atgriež kaut ko līdzīgu šim:
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 ...
Kā redzat,/proc/meminfo satur virkni informācijas par jūsu sistēmas atmiņu, ieskaitot kopējo pieejamo daudzumu (kb) un brīvo daudzumu augšējās divās rindiņās.
Palaižot komandu cat jebkuram failam/proc, tiks izvadīts to saturs. Informācija par visiem failiem ir pieejama man lapā, palaižot:
# man 5 /proc/<filename>
Es jums ātri uzzināšu/proc failos:
- /proc/cmdline - kodola komandrindas informācija.
- /proc/console - informācija par pašreizējām konsolēm, ieskaitot tty.
- /proc/devices - ierīču draiveri, kas pašlaik ir konfigurēti darbojošajam kodolam.
- /proc/dma - informācija par pašreizējiem DMA kanāliem.
- /proc/fb - kadru bufera ierīces.
- /proc/filesystems - pašreizējās failu sistēmas, kuras atbalsta kodols.
- /proc/iomem - pašreizējā ierīču sistēmas atmiņas karte.
- /proc/ioports - reģistrēti ostas reģioni ieejas izvades saziņai ar ierīci.
- /proc/loadavg - vidējā sistēmas slodze.
- /proc/locks - faili, kurus pašlaik bloķē kodols.
- /proc/meminfo - informācija par sistēmas atmiņu (skat. iepriekš minēto piemēru).
- /proc/misc - dažādi draiveri, kas reģistrēti dažādām galvenajām ierīcēm.
- /proc/modules - Pašlaik ielādētie kodola moduļi.
- /proc/mounts - visu sistēmas izmantoto stiprinājumu saraksts.
- /proc/partitions - detalizēta informācija par sistēmai pieejamo nodalījumiem.
- /proc/pci - informācija par katru PCI ierīci.
- /proc/stat - ieraksts vai dažāda statistika, kas tiek glabāta no pēdējās atsāknēšanas.
- /proc/swap - informācija par vietu maiņu.
- /proc/uptime - informācija par darbalaiku (sekundēs).
- /proc/version - instalēta kodola versija, gcc versija un Linux izplatīšana.
/ Proc numurētajos direktorijos atradīsit dažus failus un saites. Atcerieties, ka šo direktoriju numuri korelē ar tajos palaistās komandas PID. Izmantosim piemēru. Manā sistēmā ir mapes nosaukums/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
Ja es skrienu:
# cat /proc/12/status
Es saņemu sekojošo:
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
Tātad, ko tas nozīmē? Nu, svarīgā daļa ir augšpusē. No statusa faila mēs varam redzēt, ka šis process pieder xenwatch. Pašreizējais stāvoklis guļ, un procesa ID ir acīmredzami 12. Mēs arī varam redzēt, kas to darbojas, jo UID un GID ir 0, kas norāda, ka šis process pieder root lietotājam.
Jebkurā numurētā direktorijā jums būs līdzīga failu struktūra. Vissvarīgākie un to apraksti ir šādi:
- cmdline - procesa komandrinda
- vide - vides mainīgie
- fd - failu deskriptori
- robežas - satur informāciju par procesa robežām
- ar stiprinājumiem saistīta informācija
Numurētajā direktorijā pamanīsit arī vairākas saites:
- cwd - saite uz pašreizējo procesa direktoriju
- exe - saite uz procesa izpildāmo failu
- sakne - saite uz procesa darba direktoriju
Tādējādi jums vajadzētu sākt iepazīties ar/proc direktoriju. Tam vajadzētu arī sniegt ieskatu par to, kā vairākas komandas iegūst informāciju, piemēram, uptime, lsof, mount un ps, lai tikai nosauktu dažus.