Hvordan drepe en prosess i Linux

Vi har alle hatt de dagene da datamaskinen vår kjører eksepsjonelt sakte og hakker i å utføre selv de grunnleggende oppgavene. I Windows har du bare Windows Task Manager for å inspisere og drepe prosesser som ikke er så viktige, men som bruker enorme mengder minne. Men i Linux har du et helt arsenal av kommandoer og GUI-verktøy for å administrere disse oppgavene. I denne artikkelen vil vi vise noen enkle kommandolinjemetoder (CLI) samt GUI-metoder for hvordan du dreper en prosess i Linux.

Avslutt prosess i Linux (2023)

Men før vi dykker inn i verden av prosessadministrasjon i Linux, la oss forstå nøyaktig hva en prosess er og hva som er en prosess-ID i Linux-systemer.

Hva er prosesser i Linux

I Linux er hver forekomst av et program som kjører for øyeblikket kjent som en «prosess», mens hver kjørbare fil er kjent som et program. Når et program kjøres, opprettes en prosess og hver prosess tildeles et unikt 5-sifret identifikasjonsnummer kjent som «prosess-ID». Når en prosess er fullført eller avsluttes kraftig, blir prosess-IDen tilordnet neste-i-linjen-prosessen.

Drep prosess via kommandolinje i Linux

Selv om bruk av terminalen noen ganger kan virke skremmende sammenlignet med bruk av GUI-verktøy for grunnleggende oppgaver, blir det mye enklere å administrere ulike prosesser når du først får en forståelse av kommandoene og deres ulike alternativer.

Avslutningssignaler

Når du prøver å drepe en prosess enten fra GUI eller CLI i Linux, sender kjernen et avslutningssignal til prosessen. Prosessen fungerer deretter, avhengig av signalet som mottas. Hvert av disse signalene er tildelt et spesifikt nummer for at programmet skal forstå raskt. Det finnes mange typer termineringssignaler, men vi har kun forklart de viktigste her:

SignalNumeric ValueDescriptionSIGHUP1Det står for «Signal Hangup»
Den sendes når terminalen er lukket.SIGINT2Det står for «Signal Interrupt»
Den sendes når brukeren avslutter prosessen.SIGKILL9Det står for «Signal Kill»
Den sendes når du må avslutte en prosess umiddelbartSIGTERM15Det står for «Signal Termination»
Den sendes når du trenger å avslutte en prosess og frigjøre ressursene som forbrukesSIGSTOP19 – for ARM, x86
17 – for ALPHA
23 – for MIPS
24 – for PA-RISCIt står for «Signal Stop»
Den sendes når du trenger å sette en prosess på pause og gjenoppta den senere. De mest brukte signalene er SIGKILL (9) og SIGTERM (15).

  Hvordan sette opp Enpass på Linux

Identifiser prosess-ID-ene

Før du avslutter en prosess, må du vite noen detaljer om prosessen som prosess-ID, kjøretid osv. For å vite detaljene i en prosess, bruk ps-kommandoen:

ps

Med ps-kommandoen må du søke etter prosessen ved å bla og merke navnet, noe som kan være tungvint. I stedet kan du til og med bruke grep-kommandoen med ps-kommandoen i en pipeline, som vist nedenfor:

ps | grep

For å gjøre ting enklere, er det en egen kommando som bare viser prosess-ID-en til en kjørende prosess du trenger å vite. Syntaksen for å bruke pidof-kommandoen er:

pidof

Avslutt prosessen ved å bruke kill-kommandoen

Når du har notert prosess-ID-en til prosessen du vil avslutte, er den vanligste kommandoen som brukes til å avslutte programmer på Linux-systemet, kill-kommandoen. Syntaksen for å bruke kill-kommandoen er:

drep

Parameteren er valgfri og kill-kommandoen sender SIGTERM (15)-signalet som standard. Du kan sende et hvilket som helst annet signal etter dens numeriske verdi eller det faktiske signalnavnet fra tabellen ovenfor.

Avslutt prosessen ved å bruke pkill-kommandoen

Hvis du føler at det er upraktisk å søke etter prosess-ID, kan du bruke kommandoen pkill. Den ser etter prosessene som samsvarer med et mønster og dreper det. Syntaksen for å bruke pkill-kommandoen er:

pkill

Noen av de vanlige alternativene for å pare med pkill-kommandoen er:

OptionDescription-nVelger bare de siste prosessene som samsvarer med prosessen id-uVelger prosessene som eies av en bestemt bruker-xSelects prosesser som samsvarer nøyaktig med mønsteret

Dette er spesielt viktig når flere brukere jobber med forskjellige forekomster av samme program i samme system og en av forekomstene begynner å ha uventet oppførsel. For eksempel, i skjermbildet nedenfor, dreper vi «gedit»-forekomsten som eies av brukeren «intel» ved å bruke pkill-kommandoen i Linux:

pkill -u intel gedit

Avslutt prosessen med killall-kommando

Killall-kommandoen fungerer på samme måte som kill-kommandoen, men den dreper alle prosessene som samsvarer med prosessnavnet, uavhengig av brukeren. Som standard sender den SIGTERM-signalet hvis ikke annet er spesifisert. En interessant ting å merke seg er at killall-kommandoen aldri kan drepe seg selv, men kan avslutte andre forekomster av killall-kommandoen. Syntaksen for å bruke killall-kommandoen er:

killall

Noen av alternativene for å pare med killall-kommandoen er:

OptionDescription-r Tolker prosessnavnet som et regex-mønster og dreper deretter prosessene som samsvarer med mønsteret-ukills den spesifiserte prosessen som eies av en spesifisert eier.-oKiller de spesifiserte prosessene eldre (startet før) enn et spesifikt tidspunkt.-yKills de spesifiserte prosessene yngre ( startet etter) det spesifikke tidspunktet.

Killall-kommandoen kan være nyttig for å avslutte en serie av samme prosess eller til og med alle prosessene som eies av en spesifikk eier. Her i vårt eksempel dreper vi alle prosessene med å «sove i 500 sekunder» ved å bruke killall-kommandoen i Linux:

  Hva er gcloud og hvordan installeres på Windows, MacOS og Linux?

killall -v søvn

Avslutt Linux-prosessen ved å bruke top/htop-kommando

Denne metoden for å drepe prosesser er nyttig når du ikke har noen anelse om hvilke prosesser som bruker maksimalt ressurser. I begge kommandoene kan du navigere gjennom alle kjørende prosesser eller til og med zombieprosesser og kan avslutte dem raskt. For å bruke toppkommandoen til å overvåke ressursene dine, bruk syntaksen i terminalen:

topp

Forstå resultatet:

Hovedutgangen til toppkommandoen er delt inn i kolonner som er:

  • PID – viser prosess-IDen til den kjørende prosessen
  • Bruker – viser eieren av prosessen
  • PR – viser prioritetsverdien til prosessen som er tildelt av operativsystemet
  • NI – viser de fine verdiene som er som å tilordne brukeravstandsverdier for å manuelt kontrollere prioriteten til en oppgave.
  • VIRT – viser mengden virtuelt minne som brukes av prosessen.
  • RES – viser mengden fysisk minne som brukes av prosessen
  • SHR – viser mengden minne som deles av andre prosesser
  • S – viser den nåværende tilstanden til prosessen som kan være:
    • D – uavbrutt søvn
    • R – løping
    • S – sover
    • T – stoppet
    • Z – zombie
  • %CPU – Viser mengden CPU som brukes av prosessen i prosent
  • %MEM – Viser mengden RAM som brukes av prosessen i prosent
  • TID+ – Viser den totale kjøretiden for prosessen
  • Kommando – Viser hvilken kommando som ble påkalt for prosessen.
  • Hvis du ikke kjenner prosess-IDen til oppgaven du vil drepe, kan du enten navigere gjennom listen ved å bruke piltastene eller søke etter prosessnavnet i prosesstabellen i Linux.

    For å søke etter prosessnavnet, trykk «L» på tastaturet og skriv inn prosessnavnet du vil søke etter. Når du har funnet den uhyggelige prosessen, trykk «k» på tastaturet for å drepe prosessen. Skriv inn prosess-ID-en eller la den stå ved den fremhevede prosessen og trykk «ENTER». Skriv deretter inn termineringssignalet og trykk deretter «ENTER» for å avslutte programmet. For å gå tilbake til terminalen, trykk «q» på tastaturet.

    Selv om den øverste kommandoen viser detaljer som prosess-ID, minneforbruk og mer for alle de kjørende prosessene, er den ikke godt egnet for nybegynnere siden den ikke viser noen nøkkeltilordninger eller hvordan den skal brukes. På den annen side har htop-kommandoen et mer brukervennlig grensesnitt, selv for et kommandolinjeverktøy. I tillegg viser den alle detaljene i en separat visning, og dermed roter den ikke i terminalvinduet. Det kommer ikke forhåndsinstallert i de fleste distroer, og du må bruke følgende kommando for å installere htop i Linux:

    sudo apt install -y htop

    For å bruke htop til å administrere prosesser i Linux, bruk kommandoen nedenfor:

      Slik spiller du Total War: ROME II på Linux

    htop

    For å drepe et program, naviger til prosessnavnet du vil avslutte, trykk «F9» og trykk deretter Enter. Hvis du trenger å søke og drepe et hvilket som helst program, trykk «F3» på tastaturet, skriv inn navnet og trykk Enter. Prosessnavnet vil bli uthevet, trykk F9 og trykk deretter Enter på tastaturet for å avslutte prosessen.

    Drep en prosess via System Monitor i Linux

    Hvis du føler at kommandolinjemetoden er vanskelig for deg, kan du bruke det innebygde systemovervåkingsverktøyet som er tilgjengelig på alle Linux-distribusjoner. For å lære hvordan det fungerer, åpne systemovervåkingsverktøyet fra applikasjonsmenyen og følg trinnene nedenfor.

    1. Når systemovervåkingsverktøyet åpnes, vil du se tre faner øverst med navn – Prosesser, ressurser og filsystem. For å administrere prosessene dine, gå over til «Prosesser»-fanen. Her vil du se alle prosessene du kjører for øyeblikket. Trykk «CTRL+F» for å søke etter et prosessnavn. Klikk på prosessnavnet du vil avslutte og klikk på «Avslutt prosess».

    2. Deretter vil du få en bekreftelsesmelding om du vil avslutte prosessen eller ikke. Gå videre og klikk på den store røde «Avslutt prosess» -knappen for å drepe prosessen i Linux.

    ofte stilte spørsmål

    Hvordan stopper jeg alle prosesser i Linux?

    Hvis du trenger å stoppe alle prosesser (unntatt påloggingsskallet, init og kjernespesifikke prosesser) for en spesifikk bruker i Linux, bruk enten pkill-kommandoen eller killall-kommandoen i henhold til syntaksen:

    pkill -u

    killall -u

    Hvis du trenger å drepe hver prosess for hver bruker, inkludert init-systemet, trykk «ALT + Prt Sc + o»-tastene på tastaturet.

    Er det greit å avslutte en prosess?

    Når du lukker en ikke-essensiell bakgrunnsprosess eller en brukerprosess som bruker mye systemminne, frigjør du ressursene som nå kan brukes av andre prosesser. Men før du slår av en prosess, sørg for at du ikke dreper en viktig operativsystemprosess.

    Hva er bakgrunnsprosessene i Linux?

    I Linux er bakgrunnsprosesser prosesser som kan kjøres uten shell-forekomsten eller brukerintervensjon. De kan sees ved hjelp av hvilken som helst av kommandoene – topp, htop, ps, etc.

    Hva er en zombieprosess?

    En prosess som har blitt drept av brukeren, men som fortsatt opptar minnet, er kjent som en zombieprosess.

    Hva gjør CTRL + Z i Linux?

    Når du bruker CTRL + Z i Linux, sender den SIGTSTP-signalet som suspenderer prosessen og sender det i bakgrunnen. Når en prosess er i suspendert tilstand i bakgrunnen, kan du ikke drepe prosessen før den bringes tilbake i forgrunnen.

    Drep prosesser i Linux enkelt

    Å drepe prosesser for hukommelsestap er en ganske avgjørende oppgave som hver bruker bør lære. I denne artikkelen har vi vist både kommandolinjemetoden, inkludert kommandoer som killall og pkill, samt GUI-metodene for å drepe prosesser i Linux. Vi har til og med detaljert hvordan du bruker populære verktøy som top og htop for å administrere prosesser på din Linux-PC. Hvis du møter noen problemer mens du bruker disse verktøyene for å drepe en prosess, gi oss beskjed i kommentarene nedenfor.