Sådan dræber du en proces i Linux

Vi har alle haft de dage, hvor vores computer kører usædvanligt langsomt og hakker i udførelsen af ​​selv de grundlæggende opgaver. I Windows har du kun Windows Task Manager til at inspicere og dræbe processer, der ikke er så vigtige, men som bruger enorme mængder hukommelse. Men i Linux har du et helt arsenal af kommandoer og GUI-værktøjer til at styre disse opgaver. I denne artikel vil vi vise nogle nemme kommandolinjemetoder (CLI) samt GUI-metoder til, hvordan man dræber en proces i Linux.

Afslut proces i Linux (2023)

Men før vi dykker ned i verden af ​​processtyring i Linux, lad os forstå, hvad en proces præcis er, og hvad er et proces-id i Linux-systemer.

Hvad er processer i Linux

I Linux er hver aktuelt kørende forekomst af et program kendt som en “proces”, mens hver eksekverbare fil er kendt som et program. Når et hvilket som helst program udføres, oprettes en proces, og hver proces tildeles et unikt 5-cifret identifikationsnummer kendt som “proces ID”. Når en proces er færdig med at eksekvere eller afsluttes kraftigt, bliver dens proces-id tildelt den næste-i-rækken-proces.

Dræb proces via kommandolinje i Linux

Selvom det nogle gange kan virke skræmmende at bruge terminalen sammenlignet med at bruge GUI-værktøjer til grundlæggende opgaver, bliver det meget nemmere at administrere forskellige processer, når du først får en forståelse af kommandoerne og deres forskellige muligheder.

Afslutningssignaler

Når du forsøger at dræbe en proces enten fra GUI eller CLI i Linux, sender kernen et termineringssignal til processen. Processen fungerer i overensstemmelse hermed, afhængigt af det modtagne signal. Hvert af disse signaler er tildelt et specifikt nummer, som programmet kan forstå hurtigt. Der er adskillige typer af termineringssignaler, men vi har kun forklaret de væsentlige her:

SignalNumeric ValueDescriptionSIGHUP1Det står for ‘Signal Hangup’
Det sendes, når terminalen er lukket.SIGINT2Det står for ‘Signal Interrupt’
Det sendes, når brugeren afslutter processen.SIGKILL9Det står for ‘Signal Kill’
Det sendes, når du skal afslutte en proces med det sammeSIGTERM15Det står for ‘Signal Termination’
Den sendes, når du skal afslutte en proces og frigive de forbrugte ressourcerSIGSTOP19 – til ARM, x86
17 – for ALPHA
23 – for MIPS
24 – for PA-RISCIt står for ‘Signal Stop’
Det sendes, når du skal sætte en proces på pause og genoptage den senere. De mest almindeligt anvendte signaler er SIGKILL (9) og SIGTERM (15).

Identificer proces-id’erne

Før du afslutter en proces, skal du kende nogle detaljer om processen, såsom proces-id, køretid osv. For at kende detaljerne i en proces, brug ps-kommandoen:

  Sådan installeres Flowblade Video Editor til Linux

ps

Med ps-kommandoen skal du søge efter processen ved at rulle og notere dens navn, hvilket kan være besværligt. I stedet kan du endda bruge grep-kommandoen med ps-kommandoen i en pipeline, som vist nedenfor:

ps | grep

For at gøre tingene enklere er der en separat kommando, der kun viser proces-id’et for enhver kørende proces, du har brug for at kende. Syntaksen for at bruge kommandoen pidof er:

pidof

Afslut processen ved at bruge kill-kommandoen

Når du har noteret proces-id’et for den proces, du vil afslutte, er den mest almindelige kommando, der bruges til at afslutte programmer på dit Linux-system, kill-kommandoen. Syntaksen for at bruge kill-kommandoen er:

dræbe

Parameteren er valgfri, og kill-kommandoen sender SIGTERM (15) signalet som standard. Du kan sende et hvilket som helst andet signal ved dets numeriske værdi eller det faktiske signalnavn fra tabellen ovenfor.

Afslut processen ved hjælp af pkill-kommandoen

Hvis du føler, at det er ubelejligt at søge efter proces-id, kan du bruge kommandoen pkill. Den leder efter de processer, der matcher et mønster, og dræber det derefter. Syntaksen for at bruge kommandoen pkill er:

pkill

Nogle af de almindelige muligheder for at parre med kommandoen pkill er:

OptionDescription-nVælger kun de seneste processer, der matcher processen id-uVælger de processer, der ejes af en bestemt bruger-xSelects processer, der matcher mønsteret nøjagtigt

Dette er især vigtigt, når flere brugere arbejder på forskellige forekomster af det samme program i det samme system, og en af ​​forekomsterne begynder at have en uventet adfærd. For eksempel, i nedenstående skærmbillede, dræber vi “gedit”-forekomsten, der ejes af brugeren ‘intel’ ved hjælp af pkill-kommandoen i Linux:

pkill -u intel gedit

Afslut processen med killall kommando

Killall-kommandoen fungerer på samme måde som kill-kommandoen, men den dræber alle de processer, der matcher procesnavnet, uanset brugeren. Som standard sender den SIGTERM-signalet, hvis ikke andet er angivet. En interessant ting at bemærke er, at killall-kommandoen aldrig kan dræbe sig selv, men kan afslutte andre forekomster af killall-kommandoen. Syntaksen for at bruge killall-kommandoen er:

killall

Nogle af mulighederne for at parre med killall-kommandoen er:

OptionDescription-rFortolker procesnavnet som et regex-mønster og dræber derefter processerne, der matcher mønsteret-ukills den specificerede proces, der ejes af en specificeret ejer.-oKills de specificerede processer ældre (startet før) end et bestemt tidspunkt.-yKills de specificerede processer yngre ( startede efter) det specifikke tidspunkt.

Killall-kommandoen kan være nyttig til at afslutte en serie af den samme proces eller endda alle de processer, der ejes af en specifik ejer. Her i vores eksempel dræber vi alle processer med at “sove i 500 sekunder” ved hjælp af killall-kommandoen i Linux:

  Sådan kører du Linux-apps fra Bash på Windows 10 [Guide]

killall -v søvn

Afslut Linux-processen ved hjælp af top/htop-kommando

Denne metode til at dræbe processer er nyttig, når du ikke har nogen anelse om, hvilke processer der bruger maksimalt ressourcer. I begge kommandoer kan du navigere gennem alle de kørende processer eller endda zombieprocesser og kan afslutte dem hurtigt. For at bruge den øverste kommando til at overvåge dine ressourcer, skal du bruge syntaksen i terminalen:

top

Forståelse af output:

Hovedoutputtet af den øverste kommando er opdelt i kolonner, som er:

  • PID – viser proces-id’et for den kørende proces
  • Bruger – viser ejeren af ​​processen
  • PR – viser prioritetsværdien af ​​processen, som er tildelt af operativsystemet
  • NI – viser de pæne værdier, der er som at tildele værdier med brugerafstand til manuelt at styre en opgaves prioritet.
  • VIRT – viser mængden af ​​virtuel hukommelse, der bruges af processen.
  • RES – viser mængden af ​​fysisk hukommelse, der bruges af processen
  • SHR – viser mængden af ​​hukommelse, der deles af andre processer
  • S – viser den aktuelle tilstand af processen, som kan være:
    • D – uafbrudt søvn
    • R – løb
    • S – at sove
    • T – stoppet
    • Z – zombie
  • %CPU – Viser mængden af ​​CPU brugt af processen i procent
  • %MEM – Viser mængden af ​​RAM brugt af processen i procent
  • TID+ – Viser den samlede køretid for processen
  • Kommando – Viser, hvilken kommando der blev kaldt til processen.
  • Hvis du ikke kender proces-id’et for den opgave, du vil aflive, skal du enten navigere gennem listen ved hjælp af piletasterne eller søge efter procesnavnet i procestabellen i Linux.

    For at søge i procesnavnet skal du trykke på ‘L’ på tastaturet og indtaste det procesnavn, du vil søge efter. Når du har fundet den uhyggelige proces, skal du trykke på ‘k’ på tastaturet for at dræbe processen. Indtast nu proces-id’et eller lad det stå ved den aktuelt fremhævede proces og tryk på ‘ENTER’. Indtast derefter afslutningssignalet og tryk derefter på ‘ENTER’ for at afbryde programmet. For at vende tilbage til terminalen skal du trykke på ‘q’ på tastaturet.

    Selvom den øverste kommando viser detaljer såsom proces-id, hukommelsesforbrug og mere for alle de kørende processer, er den ikke velegnet til begyndere, da den ikke viser nogen nøglekortlægninger eller hvordan man bruger den. På den anden side har htop-kommandoen en mere brugervenlig grænseflade, selv for et kommandolinjeværktøj. Plus, det viser alle detaljerne i en separat visning, og derfor roder det ikke terminalvinduet. Det kommer ikke forudinstalleret i de fleste distros, og du skal bruge følgende kommando for at installere htop i Linux:

    sudo apt install -y htop

    For at bruge htop til at administrere processer i Linux, brug kommandoen nedenfor:

    htop

      6 bedste Linux-distributioner til Raspberry Pi

    For at afbryde et program skal du navigere til det procesnavn, du vil afslutte, trykke på ‘F9’ og derefter trykke på Enter. Hvis du har brug for at søge og dræbe et program, skal du trykke på ‘F3’ på tastaturet, indtaste navnet og trykke på Enter. Processens navn vil blive fremhævet, tryk på F9 og tryk derefter på Enter på tastaturet for at afslutte processen.

    Dræb en proces via System Monitor i Linux

    Hvis du føler, at kommandolinjemetoden er svær for dig, kan du bruge det indbyggede systemovervågningsværktøj, der er tilgængeligt på enhver Linux-distribution. For at lære, hvordan det virker, skal du åbne systemovervågningsværktøjet fra menuen Programmer og følge trinene nedenfor.

    1. Når systemovervågningsværktøjet åbner, vil du se tre faner øverst med navnet – Processer, Ressourcer og Filsystem. For at administrere dine processer skal du gå over til fanen “Processer”. Her vil du se alle dine aktuelt kørende processer. Tryk på ‘CTRL+F’ for at søge efter et procesnavn. Klik på det procesnavn, du vil afslutte, og klik på “Afslut proces”.

    2. Derefter vil du få en bekræftelsesprompt, om du vil afslutte processen eller ej. Gå videre og klik på den store røde “Afslut proces”-knap for at dræbe processen i Linux.

    Ofte stillede spørgsmål

    Hvordan stopper jeg alle processer i Linux?

    Hvis du skal stoppe alle processer (undtagen login-shell, init og kernespecifikke processer) for en specifik bruger i Linux, skal du bruge enten pkill-kommandoen eller killall-kommandoen i henhold til syntaksen:

    pkill -u

    killall -u

    Hvis du har brug for at dræbe hver proces for hver bruger inklusive init-systemet, skal du trykke på ‘ALT + Prt Sc + o’-tasterne på tastaturet.

    Er det OK at afslutte en proces?

    Når du lukker enhver ikke-essentiel baggrundsproces eller en brugerproces, der bruger meget systemhukommelse, frigør du de ressourcer, som nu kan bruges af andre processer. Men før du lukker en proces ned, skal du sørge for, at du ikke dræber en vigtig operativsystemproces.

    Hvad er baggrundsprocesserne i Linux?

    I Linux er baggrundsprocesser processer, der kan køre uden shell-instansen eller nogen brugerindblanding. De kan ses ved hjælp af enhver af kommandoerne – top, htop, ps osv.

    Hvad er en zombieproces?

    En proces, der er blevet dræbt af brugeren, men som stadig optager hukommelsen, er kendt som en zombieproces.

    Hvad gør CTRL + Z i Linux?

    Når du bruger CTRL + Z i Linux, sender det SIGTSTP-signalet, som suspenderer processen og sender det i baggrunden. Når en proces er i en suspenderet tilstand i baggrunden, kan du ikke dræbe processen, før den bringes tilbage i forgrunden.

    Dræb nemt processer i Linux

    At dræbe processer med hukommelsessvigt er en ganske afgørende opgave, som enhver bruger bør lære. I denne artikel har vi vist både kommandolinjemetoden, inklusive kommandoer som killall og pkill, såvel som GUI-metoderne til at dræbe processer i Linux. Vi har endda detaljeret, hvordan du bruger populære værktøjer som top og htop til at styre processer på din Linux-pc. Hvis du står over for problemer, mens du bruger disse værktøjer til at dræbe en proces, så lad os det vide i kommentarerne nedenfor.