/proc - Få Linux-prosess og maskinvareinformasjon


I dag skal vi fordype oss i innholdet i /proc-katalogen for å utvikle en bedre forståelse av funksjonene. Det er viktig å merke seg at /proc-katalogen er en felles funksjon på tvers av alle Linux-distribusjoner, uavhengig av deres smak eller arkitektur.

En misforståelse som vi umiddelbart må avklare er at /proc-katalogen IKKE er et konvensjonelt filsystem i tradisjonell forstand av begrepet.

Det er et virtuelt filsystem som inneholder informasjon om prosesser og andre systemrelaterte data innenfor procfs. Dette filsystemet er tilordnet /proc-katalogen og monteres under systemets oppstartsprosess.

Hva er /proc i Linux

/proc-filsystemet fungerer som et grensesnitt til kjernedatastrukturer og kjøretidsinformasjon, som gir både brukere og applikasjoner en måte å få tilgang til detaljert informasjon om prosesser, systemkonfigurasjon, maskinvare og mer ved å avsløre disse dataene gjennom et hierarki av virtuelle filer.

For å se en fullstendig liste over filer og kataloger i /proc-filsystemet, kan du bruke ls-kommandoen som vist.

ls /proc

Navigere /proc i Linux

Når du navigerer til /proc-katalogen, vil du legge merke til at det er noen kjente filer, og deretter en hel haug med nummererte kataloger, som hver tilsvarer en kjørende prosess på systemet.

cd /proc
ls

Disse nummererte katalogene representerer prosessene, bedre kjent som prosess-ID-er (PID-er), og i dem en kommando som opptar dem. Filene inneholder systeminformasjon som minne (meminfo), CPU-informasjon (cpuinfo) og tilgjengelige filsystemer.

Her er noen nøkkelfiler og kataloger du vil møte:

  • /proc/cpuinfo – Vis informasjon om CPU(ene) på systemet, for eksempel modell, hastighet og antall kjerner.
  • /proc/meminfo – Vis detaljer om minnebruk og statistikk som inneholder den totale mengden minne, ledig minne og minnet som brukes av hver prosess.
  • /proc/filesystems – Inneholder en liste over alle filsystemene som støttes av kjernen.
  • /proc/sys – Liste konfigurasjon og kjøretidsparametere for kjernen.
  • /proc/loadavg – Vis systembelastningsgjennomsnitt over forskjellige tidsintervaller som 1, 5 og 15 minutter.
  • /proc/self – En symbolsk lenke til prosessens egen katalog.
  • /proc/stat – Inneholder en rekke statistikker om systemet, for eksempel antall prosesser som kjører, antall avbrudd og hvor mye tid brukt i hver CPU-tilstand.
  • /proc/uptime – Inneholder hvor lang tid systemet har kjørt.
  • /proc/PID – Inneholder informasjon om en spesifikk prosess, der PID er prosess-ID.

Trekker ut systeminformasjon

/proc/meminfo brukes til å vise informasjon om minnebruken og statistikken til et Linux-system, som inneholder et øyeblikksbilde av forskjellige minnerelaterte beregninger, som kan være nyttige for å overvåke systemytelse og ressursutnyttelse .

cat /proc/meminfo

Som du kan se, inneholder /proc/meminfo en haug med informasjon om systemets minne, inkludert det totale tilgjengelige beløpet (i kb) og ledig beløp på de to øverste linjer.

Hvis du kjører cat-kommandoen på en av filene i /proc, vil innholdet deres sendes ut. Informasjon om alle filer er tilgjengelig på man-siden ved å kjøre:

man 5 /proc/<filename>

Jeg vil gi deg en rask oversikt over /procs filer:

  • /proc/cmdline – Kjernens kommandolinjeinformasjon.
  • /proc/console – Informasjon om gjeldende konsoller, inkludert tty.
  • /proc/devices – Enhetsdrivere som er konfigurert for den kjørende kjernen.
  • /proc/dma – Info om aktuelle DMA-kanaler.
  • /proc/fb – Framebuffer-enheter.
  • /proc/filesystems – Gjeldende filsystemer som støttes av kjernen.
  • /proc/iomem – Gjeldende systemminnekart for enheter.
  • /proc/ioports – Registrerte portregioner for input-output kommunikasjon med enheten.
  • /proc/loadavg – Gjennomsnittlig systembelastning.
  • /proc/locks – Filer som for øyeblikket er låst av kjernen.
  • /proc/meminfo – Info om systemminne (se eksempelet ovenfor).
  • /proc/misc – Diverse drivere registrert for diverse hovedenheter.
  • /proc/modules – Nåværende innlastede kjernemoduler.
  • /proc/mounts – Liste over alle monteringer som brukes av systemet.
  • /proc/partitions – Detaljert informasjon om partisjoner tilgjengelig for systemet.
  • /proc/pci – Informasjon om hver PCI-enhet.
  • /proc/stat – Registrering eller diverse statistikker holdt fra siste omstart.
  • /proc/swap – Informasjon om bytteplass.
  • /proc/uptime – Oppetidsinformasjon (i sekunder).
  • /proc/version – Kjerneversjon, gcc-versjon og Linux-distribusjon installert.

Trekke ut prosessinformasjon

Innenfor /procs nummererte kataloger finner du noen få filer og koblinger. Husk at tallene til disse katalogene korrelerer med PID til kommandoen som kjøres i dem.

For eksempel, navigering til /proc/ gir detaljer som:

  • /proc//cmdline – Kommandolinjeargumenter som brukes til å starte prosessen.
  • /proc//status – Detaljert statusinformasjon, inkludert minnebruk og prosessstatistikk.
  • /proc//fd – Symbolske lenker til filer som åpnes av prosessen.

La oss bruke et eksempel for å se en mappe kalt /proc/12.

cd /proc/12
ls

Hvis jeg løper:

cat /proc/12/status

Jeg får følgende:

Så hva betyr dette? Vel, den viktige delen er på toppen. Vi kan se fra statusfilen at denne prosessen tilhører rcu_tasks_rude_kthread. Den nåværende tilstanden er uaktiv, og prosessens ID er åpenbart 12.

Vi kan også se hvem som kjører dette, siden UID og GID er 0, noe som indikerer at denne prosessen tilhører roten sterk> bruker.

I enhver nummerert katalog vil du ha en lignende filstruktur, og de viktigste med beskrivelsene er som følger:

  • cmdline – kommandolinje for prosessen
  • miljø – miljøvariabler
  • fd – filbeskrivelser
  • grenser – inneholder informasjon om grensene for prosessen
  • fester – relatert informasjon

Du vil også legge merke til flere lenker i den nummererte katalogen:

  • cwd – en lenke til den gjeldende arbeidskatalogen for prosessen
  • exe – lenke til den kjørbare filen for prosessen
  • root – lenke til arbeidskatalogen for prosessen

Dette bør få deg i gang med å gjøre deg kjent med /proc-katalogen. Den skal også gi innsikt i hvordan en rekke kommandoer får informasjonen deres, for eksempel oppetid, lsof, mount og ps, bare for å nevne noen.