Tutki/proc-tiedostojärjestelmää Linuxissa
Tänään aiomme tarkastella/proc-hakemistoa ja tutustua siihen./Proc-hakemisto on kaikissa Linux-järjestelmissä mausta tai arkkitehtuurista riippumatta.
Yksi väärinkäsitys, joka meidän on heti selvitettävä, on se, että/proc-hakemisto EI ole todellinen tiedostojärjestelmä termin mielessä. Se on virtuaalinen tiedostojärjestelmä. Procfs sisältää tietoja prosesseista ja muuta järjestelmätiedot. Se on kartoitettu/proc ja asennettu käynnistyshetkellä.
Ensinnäkin päästään sisään/proc-hakemistoon ja katsotaan ympärilleen:
# cd /proc
Ensinnäkin huomaat, että on joitain tuttuja kuulostavia tiedostoja ja sitten koko joukko numeroituja hakemistoja. Numeroidut hakemistot edustavat prosesseja, jotka tunnetaan paremmin nimellä PID, ja niiden sisällä komento, joka käyttää niitä. Tiedostot sisältävät järjestelmätiedot, kuten muisti (meminfo), suorittimen tiedot (cpuinfo) ja käytettävissä olevat tiedostojärjestelmät.
Lue myös: Linuxin vapaa komento fyysisen muistin tarkistamiseksi ja muistin vaihtamiseksi
Katsotaanpa ensin yksi tiedostoista:
# cat /proc/meminfo
joka palauttaa jotain vastaavaa tähän:
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 ...
Kuten näette,/proc/meminfo sisältää joukon tietoja järjestelmän muistista, mukaan lukien käytettävissä oleva kokonaismäärä (kt) ja vapaa määrä kahdella ylimmällä rivillä.
Kissa-komennon suorittaminen missä tahansa/proc-tiedostossa tuottaa niiden sisällön. Tietoja tiedostoista on saatavilla man-sivulla suorittamalla:
# man 5 /proc/<filename>
Annan sinulle nopeasti luettelon/proc-tiedostoista:
- /proc/cmdline - Ytimen komentorivin tiedot.
- /proc/console - Tietoja nykyisistä konsoleista, mukaan lukien tty.
- /proc/devices - Laiteohjaimet, jotka on määritetty käynnissä olevalle ytimelle.
- /proc/dma - Tiedot nykyisistä DMA-kanavista.
- /proc/fb - kehyspuskurilaitteet.
- /proc/filesystems - Ytimen tukemat nykyiset tiedostojärjestelmät.
- /proc/iomem - Laitteiden nykyinen järjestelmän muistikartta.
- /proc/ioports - Rekisteröidyt porttialueet tulolähtöä varten laitteen kanssa.
- /proc/loadavg - järjestelmän kuormituksen keskiarvo.
- /proc/locks - Ytimen tällä hetkellä lukitsemat tiedostot.
- /proc/meminfo - Tietoja järjestelmämuistista (katso yllä oleva esimerkki).
- /proc/misc - erilaiset ohjaimet, jotka on rekisteröity erilaisille päälaitteille.
- /proc/modules - Tällä hetkellä ladatut ytimen moduulit.
- /proc/mounts - Luettelo kaikista järjestelmäkäytössä olevista kiinnikkeistä.
- /proc/partitions - Yksityiskohtaista tietoa järjestelmän käytettävissä olevista osioista.
- /proc/pci - Tietoja kaikista PCI-laitteista.
- /proc/swap - Tietoja vaihtotilasta.
- /proc/uptime - Uptime-tiedot (sekunteina).
- /proc/version - Kernel-versio, gcc-versio ja Linux-jakelu asennettuna.
/ Proc: n numeroiduista hakemistoista löydät muutaman tiedoston ja linkin. Muista, että näiden hakemistojen numerot korreloivat niiden sisällä suoritettavan komennon PID: n kanssa. Käytetään esimerkkiä. Järjestelmässäni on kansion 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
Jos juoksen:
# cat /proc/12/status
Saan seuraavat:
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
Joten mitä tämä tarkoittaa? Tärkeä osa on huipulla. Tilatiedostosta voidaan nähdä, että tämä prosessi kuuluu xenwatchille. Sen nykyinen tila nukkuu, ja sen prosessitunnus on tietysti 12. Voimme myös nähdä, kuka suorittaa tämän, koska UID ja GID ovat 0, mikä osoittaa, että tämä prosessi kuuluu pääkäyttäjälle.
Missä tahansa numeroidussa hakemistossa sinulla on samanlainen tiedostorakenne. Tärkeimmät ja niiden kuvaukset ovat seuraavat:
- cmdline - prosessin komentorivi
- ympäristö - ympäristömuuttujat
- fd - tiedostojen kuvaimet
- rajoitukset - sisältää tietoja prosessin rajoista
- kiinnitykseen liittyvät tiedot
Huomaa myös useita linkkejä numeroidussa hakemistossa:
- cwd - linkki prosessin nykyiseen työhakemistoon
- exe - linkki prosessin suoritettavaan tiedostoon
- juuri - linkki prosessin työhakemistoon
Tämän pitäisi auttaa sinua tutustumaan/proc-hakemistoon. Sen pitäisi myös antaa tietoa siitä, kuinka monet komennot hankkivat tietonsa, kuten käyttöaika, lsof, mount ja ps vain muutamia mainitakseni.