/ Proc-failisüsteemi uurimine Linuxis
Täna vaatame/proc kataloogi ja tutvume sellega. Kataloog/proc on olemas kõigis Linuxi süsteemides, olenemata maitsest ja arhitektuurist.
Üks väärarusaam, mille peame kohe selgeks tegema, on see, et kataloog/proc ei ole selle termini tähenduses tõeline failisüsteem. See on virtuaalne failisüsteem. Procfs sisaldab teavet protsesside kohta ja muud süsteemiteavet. See on kaardistatud/proc ja kaardistatud alglaadimise ajal.
Esmalt lubage pääseda kataloogi/proc ja vaadata ringi:
# cd /proc
Esimene asi, mida märkate, on see, et seal on mõned tuttavad helifailid ja seejärel terve hulk nummerdatud katalooge. Nummerdatud kataloogid tähistavad protsesse, mida tuntakse paremini kui PID-sid, ja nende sees käsk, mis neid hõivab. Failid sisaldavad süsteemi teavet, näiteks mälu (meminfo), protsessori teavet (cpuinfo) ja saadaolevaid failisüsteeme.
Loe ka: Linuxi vaba käsk füüsilise mälu kontrollimiseks ja mälu vahetamiseks
Vaatame kõigepealt ühte failidest:
# cat /proc/meminfo
mis tagastab midagi sarnast:
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 ...
Nagu näete, sisaldab/proc/meminfo hulga teavet teie süsteemi mälu kohta, sealhulgas kogu saadaolev kogus (kb-des) ja ülemisel kahel real vaba summa.
Käsu kass käivitamine mis tahes/proc failis/proc väljastab nende sisu. Teave mis tahes failide kohta on saadaval man-lehel, käivitades:
# man 5 /proc/<filename>
Annan teile/proci failides kiire ülevaate:
- /proc/cmdline - kerneli käsurea teave.
- /proc/console - teave praeguste konsoolide, sealhulgas tty kohta.
- /proc/devices - töötava tuuma jaoks praegu seadistatud seadmedraiverid.
- /proc/dma - teave praeguste DMA kanalite kohta.
- /proc/fb - kaadripuhvriseadmed.
- /proc/filesystems - tuum toetab praeguseid failisüsteeme.
- /proc/iomem - seadmete praegune süsteemimälukaart.
- /proc/ioports - registreeritud pordipiirkonnad sisendväljundi suhtlemiseks seadmega.
- /proc/loadavg - süsteemi koormuse keskmine.
- /proc/locks - tuuma poolt praegu lukustatud failid.
- /proc/meminfo - teave süsteemimälu kohta (vt ülaltoodud näidet).
- /proc/misc - mitmesugused draiverid, mis on registreeritud mitmesuguse suurema seadme jaoks.
- /proc/modules - Praegu laaditud kernelmoodulid.
- /proc/mounts - kõigi süsteemide kaupa kasutatavate kinnituste loend.
- /proc/partitions - üksikasjalik teave süsteemile saadaolevate partitsioonide kohta.
- /proc/pci - teave iga PCI-seadme kohta.
- /proc/stat - rekord või mitmesugune statistika, mida hoitakse viimasest taaskäivitamisest.
- /proc/swap - teave ruumi vahetamise kohta.
- /proc/uptime - teave tööaja kohta (sekundites).
- /proc/version - installitud kerneli versioon, gcc versioon ja Linuxi levitamine.
/ Proci nummerdatud kataloogidest leiate mõned failid ja lingid. Pidage meeles, et nende kataloogide numbrid korreleeruvad neis käivitatava käsu PID-ga. Kasutagem näidet. Minu süsteemis on kausta nimi/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
Kui ma jooksen:
# cat /proc/12/status
Ma saan järgmise:
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
Mida see siis tähendab? Noh, oluline osa on tipus. Olekufailist näeme, et see protsess kuulub xenwatchile. Selle praegune olek on unes ja protsessi ID on ilmselgelt 12. Samuti näeme, kes seda käivitab, kuna UID ja GID on 0, mis näitab, et see protsess kuulub juurkasutajale.
Mis tahes nummerdatud kataloogis on teil sarnane failistruktuur. Kõige olulisemad ja nende kirjeldused on järgmised:
- cmdline - protsessi käsurida
- keskkond - keskkonnamuutujad
- fd - failikirjeldajad
- piirid - sisaldab teavet protsessi piiride kohta
- kinnitustega seotud teave
Samuti märkate nummerdatud kataloogis mitmeid linke:
- cwd - link protsessi praegusele töökataloogile
- exe - link protsessi käivitatava failiga
- juur - link protsessi töökataloogi
See peaks alustama kataloogi/proc tutvumist. Samuti peaks see andma ülevaate, kuidas paljud käsud saavad teavet, näiteks uptime, lsof, mount ja ps, et nimetada vaid mõnda.