Få en oversikt over prosessene som kjører på din Linux-maskin ved hjelp av `ps`-kommandoen. Identifiser prosesser basert på navn, bruker eller terminal, med detaljnivået du selv ønsker. Her får du en innføring i hvordan du går frem.
Prosessadministrasjon i Linux
Kjernen er den sentrale delen av alle Linux- og Unix-baserte operativsystemer. En av dens mange oppgaver er å fordele systemressurser som RAM og CPU-tid. Dette må administreres i sanntid for å sikre at alle aktive prosesser får sin rettferdige andel, basert på prioriteten til hver enkelt oppgave.
Noen ganger kan oppgaver fryse, havne i en endeløs loop, eller av andre grunner slutte å reagere. Eller de kan fortsette å kjøre, men forbruke for mye CPU-tid eller RAM, eller oppføre seg uønsket på andre måter. I noen tilfeller må oppgaver avsluttes for å unngå problemer. Det første skrittet er å identifisere den aktuelle prosessen.
Men det kan også være at du ikke har noen problemer med oppgaver eller ytelse. Kanskje du bare er nysgjerrig på hvilke prosesser som er aktive på maskinen din, og vil ta en titt under overflaten. `ps`-kommandoen tilfredsstiller begge disse behovene. Den gir deg et direkte bilde av hva som skjer i datamaskinen i øyeblikket.
`ps` er fleksibel nok til å gi deg nøyaktig den informasjonen du trenger, i det formatet du ønsker. `ps` har mange ulike alternativer. Alternativene som beskrives her, vil dekke de fleste vanlige behov. Om du trenger å dykke dypere inn i `ps` enn det vi gjør her, vil du finne at vår introduksjon gjør manualen enklere å forstå.
Visning av prosesser
Den enkleste måten å bruke `ps` på er å starte den uten noen parametere:
ps
`ps` viser en liste over prosessene som er startet av brukeren som kjørte kommandoen.
De fire kolonnene viser følgende:
PID: | Prosessens ID-nummer. |
TTY: | Navnet på terminalen som brukeren er logget inn på. |
TID: | Mengden CPU-tid prosessen har brukt. |
CMD: | Navnet på kommandoen som startet prosessen. |
Visning av prosesser for alle brukere
Ved å legge til `-e` (velg alle prosesser) kan vi få `ps` til å vise prosesser startet av alle brukere, ikke bare brukeren som kjører `ps`-kommandoen. Da dette kan gi en lang liste, legger vi den inn i `less`.
ps -e | less
Prosesslisten sendes til `less`.
Vi får mange flere oppføringer i listen, men ser de samme fire kolonnene som før. Oppføringene med spørsmålstegn `?` i `TTY`-kolonnen ble ikke startet fra et terminalvindu.
Visning av prosesshierarki
Noen ganger kan det være nyttig å finne et problem eller identifisere en spesifikk prosess ved å se hvilke prosesser som startet andre prosesser. Vi bruker `-H` (hierarki)-alternativet for å gjøre dette.
ps -eH | less
Innrykk viser hvilke prosesser som er foreldre til andre prosesser.
For å gjøre det enda tydeligere kan vi be `ps` legge til noen ASCII-linjer og vise hierarkiet som et tre. Alternativet for å gjøre dette er `–forest`-alternativet.
ps -eH --forest | less
Dette gjør det enklere å se hvilke prosesser som er foreldre til andre prosesser.
Visning av prosesser etter navn
Du kan sende utdata fra `ps` gjennom `grep` for å finne oppføringer som inneholder et bestemt søkeord. Her ser vi etter oppføringer som inneholder søkeordet «firefox»:
ps -e | grep firefox
I dette tilfellet er utdataene en enkelt oppføring for prosessen vi er interessert i. Hadde vi startet flere forekomster av Firefox, ville vi fått flere treff.
Visning av flere kolonner i utdata
For å legge til flere kolonner i utdata, bruk `-f` (fullformat)-alternativet.
ps -ef | less
Et ekstra sett med kolonner er inkludert i utdataene fra `ps`.
Kolonnene er:
UID: | Bruker-IDen til eieren av denne prosessen. |
PID: | Prosess-IDen til prosessen. |
PPID: | Overordnet prosess-ID for prosessen. |
C: | Antall barn prosessen har. |
TID: | Starttidspunktet. |
TTY: | Navnet på terminalen som brukeren er logget inn på. |
TID: | Mengden CPU-tid prosessen har brukt. |
CMD: | Navnet på kommandoen som startet prosessen. |
Ved å bruke `-F` (ekstra fullformat)-alternativet kan vi få enda flere kolonner:
ps -eF | less
Kolonnene vi får denne gangen krever at skjermen rulles sidelengs for å se alle.
Ved å trykke på «høyre pil»-tasten flyttes skjermen mot venstre.
Kolonnene vi nå får er:
UID: | Bruker-IDen til eieren av denne prosessen. |
PID: | Prosess-IDen til prosessen. |
PPID: | Overordnet prosess-ID for prosessen. |
C: | Antall barn prosessen har. |
SZ: | Størrelse i RAM-sider av prosessbildet. |
RSS: | Resident set size. Det ikke-byttede fysiske minnet som brukes av prosessen. |
PSR: | Prosessoren som prosessen er tildelt. |
TID: | Starttidspunktet. |
TTY: | Navnet på terminalen som brukeren er logget inn på. |
TID: | Mengden CPU-tid prosessen har brukt. |
CMD: | Navnet på kommandoen som startet prosessen. |
Visning av prosesser etter prosess-ID
Når du har funnet prosess-ID-en til prosessen du er interessert i, kan du bruke den med `ps`-kommandoen for å se detaljene for den prosessen. Bruk `-p` (velg etter prosess-ID)-alternativet for å oppnå dette:
ps -p 3403
Detaljene for denne prosessen vises:
Du er ikke begrenset til en enkelt prosess-ID. Du kan gi en liste over prosess-ID-er, atskilt med mellomrom.
Visning av prosesser etter kommando
`-C` (kommando)-alternativet lar deg søke etter en prosess ved å bruke kommandonavnet. Det vil si navnet på kommandoen som startet prosessen. Dette er litt forskjellig fra kommandolinjen, som kan inkludere banenavn, parametere eller andre alternativer.
ps -C shutter
Detaljene for shutter-prosessen vises.
Visning av prosesser eid av en bruker
For å se prosessene som eies av en bestemt bruker, bruk `-u` (brukerliste)-alternativet:
ps -u mary
Prosessene som eies av brukerkontoen mary vises.
Visning av prosesser etter terminal
For å se prosessene som er tilknyttet en TTY, bruk `-t` (velg etter TTY)-alternativet. Brukt uten et TTY-nummer, rapporterer `-t`-alternativet prosessene som er tilknyttet det gjeldende terminalvinduet.
tty
ps -t
tty-kommandoen rapporterer at dette er pseudo-teletype 0. Prossesene som vises av `ps -t` er alle knyttet til TTY pts/0.
Hvis vi sender et TTY-nummer på kommandolinjen, skal vi få en rapport om prosessene som er knyttet til den TTY-en.
ps -t 1
Denne gangen er alle prosessene knyttet til TTY pts/1.
Valg av kolonner som skal vises
Med `-o` (format)-alternativet kan du velge hvilke kolonner du ønsker å inkludere i utdataene fra `ps`. Du spesifiserer kolonnene ved navn. Den (lange) listen over kolonnenavn finner du i manualsiden i seksjonen med tittelen «Standard Format Specifiers». I dette eksemplet velger vi å ta med CPU-tiden (`pcpu`) og kommandolinjen med argumenter (`args`) i utdataene.
ps -e -o pcpu,args | less
Utdataene inkluderer bare de to kolonnene vi ba om.
Sortering av utdata etter kolonner
Du kan få utdataene sortert ved hjelp av `–sort`-alternativet. La oss sortere utdataene etter CPU-kolonnen:
ps -e -o pcpu,args --sort -pcpu| less
Bindestrek `-` på sorteringsparameteren `pcpu` gir en synkende sorteringsrekkefølge.
For å se de ti mest CPU-intensive prosessene, send utdataene gjennom `head`-kommandoen :
ps -e -o pcpu,args --sort -pcpu | head -10
Vi får en sortert, avkortet liste.
Hvis vi legger til flere kolonner i visningen, kan vi sortere etter flere kolonner. La oss legge til `pmem`-kolonnen. Dette er prosentandelen av maskinens minne som brukes av prosessen. Uten bindestrek, eller med pluss `+`, er sorteringsrekkefølgen stigende.
ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10
Vi får vår ekstra kolonne, og den nye kolonnen er med i sorteringen. Den første kolonnen er sortert først, og den andre kolonnen er sortert i stigende rekkefølge fordi vi ikke har satt bindestrek på `pmem`.
La oss gjøre det litt mer nyttig og legge til prosess-ID-kolonnen (`pid`) slik at vi kan se prosessnummeret for hver prosess i listen vår.
ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10
Nå kan vi identifisere prosessene.
Avslutting av prosesser etter prosess-ID
Vi har sett på flere måter å identifisere prosesser på, inkludert navn, kommando, bruker og terminal. Vi har også sett på måter å identifisere prosesser basert på dynamiske attributter som CPU-bruk og minne.
Vi har nå en oversikt over de aktive prosessene. Ved å kjenne prosess-ID-en kan vi (om nødvendig) avslutte prosesser ved hjelp av `kill`-kommandoen. Hvis vi ønsker å avslutte prosess 898, ville vi brukt denne kommandoen:
sudo kill 898
Hvis alt går bra, vil prosessen avsluttes uten videre.
Avslutting av prosesser etter navn
`pkill`-kommandoen lar deg avslutte prosesser ved navn. Pass på at du har identifisert riktig prosess! Denne kommandoen vil avslutte `top`-prosessen.
sudo pkill top
Igjen, ingen melding betyr at alt gikk bra. Prosessen avsluttes uten videre.
Avslutting av flere prosesser etter navn
Hvis du har flere kopier av en prosess som kjører, eller en prosess har skapt flere underprosesser (slik som Google Chrome kan gjøre), hvordan kan du avslutte dem? Det er like enkelt. Vi bruker `killall`-kommandoen.
Vi har to forekomster av `top` som kjører:
ps -e | grep top
Vi kan avslutte begge med denne kommandoen:
sudo killall top
Ingen respons betyr ingen problemer, så begge prosessene er avsluttet.
Få en dynamisk oversikt med `top`
Utdataene fra `ps` er et øyeblikksbilde. Det oppdateres ikke. For å få en oppdatert oversikt over prosessene, bruk `top`-kommandoen. Den gir en dynamisk visning av prosessene som kjører på maskinen din. Visningen består av to deler. Øverst er et dashbord med tekstlinjer, og nederst en tabell med kolonner.
Start `top` med denne kommandoen:
top
Kolonnene inneholder informasjon om prosessene:
PID: | Prosess-ID |
BRUKER: | Navnet på eieren av prosessen |
PR: | Prosessprioritet |
NI: | Nice-verdien for prosessen |
VIRT: | Virtuelt minne som brukes av prosessen |
RES: | Resident minne som brukes av prosessen |
SHR: | Delt minne som brukes av prosessen |
S: | Status for prosessen. Se listen nedenfor over mulige verdier for dette feltet |
%CPU: | Andelen CPU-tid brukt av prosessen siden forrige oppdatering |
%MEM: | Andel av fysisk minne brukt |
TID+: | Total CPU-tid brukt av oppgaven i hundredeler av et sekund |
KOMMANDO: | Kommandonavn eller kommandolinje (navn og kommandolinjeparametere) Hvis kommandokolonnen ikke vises, trykk på «høyre pil»-tasten. |
Statusen for prosessen kan være en av:
D: | Uav |