AZ-kommandoer

Hvordan drepe eller avslutte en Linux-prosess Den ultimate guiden

Hvordan drepe eller avslutte en Linux-prosess Den ultimate guiden

Multiprocessing-operativsystemer som Linux og BSD-er bruker flere metoder for å maksimere CPU-utnyttelse. En prosess er rett og slett et program i utførelse. Siden det vil være mer enn en Linux-prosess som kjører på et gitt tidspunkt, er prosessadministrasjon i Linux ekstremt viktig. Brukere møter ofte problemer som prosessering av CPU-ressurser når de kjører for mange programmer. Situasjoner som dette dukker opp når CPU ikke klarer å håndtere det økende antall prosesser. Selv om dette ikke helt avhenger av kraften til CPU-en din, kan det være ganske frustrerende å håndtere hengte eller zombie-prosesser. For å hjelpe deg med å redusere slike forekomster, skisserer vi noen vanlige måter å drepe disse prosessene på.

Behersker ikke responsiv prosessadministrasjon i Linux


Du lærer flere måter å avslutte en Linux-prosess som ikke reagerer i det hele tatt. Hvis du kommer fra Windows, er du kanskje kjent med Ctrl + Alt + Delete. Tilsvarende har Mac-brukere Command + Option + Escape-metoden for å drepe frosne prosesser. Linux er mye mer allsidig enn sine kolleger og tilbyr mer enn en metode for å takle døde / ikke-reagerende prosesser.

Ulike metoder for å drepe en død Linux-prosess


Vi vil hovedsakelig skissere to metoder for å drepe zombieprosesser. Vi bruker Linux-terminalen for den første metoden. For dette må vi først identifisere prosess-ID. Når det er oppnådd, kan vi bruke denne PID til å drepe programmet ved å sende spesifikke signaler til den PID.

Du vil også lære hvordan du utfører slike Linux-kill-jobber fra det grafiske brukergrensesnittet eller X-vinduet. Vi kommer til å utnytte 'System Monitor' applikasjon tilgjengelig i Ubuntu for dette. Selv om dette er et GNOME-program, er lignende verktøy tilgjengelige for andre Linux-skrivebordsmiljøer.

Avslutte en ikke-responsiv prosess fra kommandolinjen


Det er flere verktøy for å avslutte en ikke-responsiv eller hengt prosess fra kommandolinjen, inkludert drepe, pkill, og Drep alle. Disse kommandoene fungerer ved å sende spesifikke signaler til disse ikke-reagerende prosessene. Du kommer til å trenge prosess-ID eller PID informasjon slik at du kan sende dem det nødvendige avslutningssignalet.

PID eller prosess-ID er et unikt nummer som identifiserer en prosess. Disse er opprettet av Linux-kjernen under kjøretid, og prosessplanleggeren styrer CPU-aktivitetene sine. Så når du påkaller et program, vil kjernen først gyte de nødvendige prosessene og tildele dem disse unike PID-verdiene. Det kan være flere PID-er knyttet til en prosess. Videre har hver prosess en enslig foreldreprosess med en unik PPID (Parent Process ID).

Så hvis du kan finne ut denne PPID-en, kan du sende et drapsignal ved hjelp av programmer designet for dette formålet. Nedenfor lærer du hvordan du sjekker løpende prosesser i Linux og identifiserer PPID fra terminalen.

Finn ut PPID-informasjonen


Du kan finne ut PPID for en prosess ved hjelp av flere prosessstyringskommandoer i Linux, for eksempel pidof, pstree, og pgrep. La oss undersøke dem en etter en og se hvordan du får PID for en Linux-prosess.

Metode 1: Bruke ps kommando


Ps-kommandoen i Linux viser alle kjørende prosesser ved siden av annen prosessrelatert informasjon som PID i terminalen. Vi kan bruke denne kommandoen til å liste opp alle prosesser og deretter filtrere ut en bestemt prosess ved hjelp av Linux grep-kommandoer. Det skal vise oss prosess-ID-informasjonen vi er interessert i.

$ nano> / dev / null &
$ ps aux | grep "nano"

Først har vi påkalt en Linux teksteditor i bakgrunnen. Så har vi brukt ps-kommandoen sammen med grep-kommandoen for å finne ut PPID for denne redaktøren. Utgangen kan inneholde flere prosess-ID-er, men vi er bare interessert i den første siden det er vår PPID. Vi kan også bruke Linux awk-kommandoen for å finne ut denne informasjonen, som vist nedenfor.

$ ps aux | awk '/ nano / print $ 2'

Denne kommandoen er mer fleksibel siden den undertrykker all irrelevant informasjon. Den viser bare PPID-informasjonen vi leter etter.

Metode 2: Bruke pstree-kommandoen


Pstree-kommandoen gir oss et trelignende syn på alle prosesser som kjører. Det gir en grafisk oversikt over Linux-oppgavelisten fra terminalvinduet. Du kan se PPID samt all PID-informasjonen til en prosess ved hjelp av denne kommandoen. Ta en titt på eksemplene nedenfor for å lære hvordan du kan utnytte pstree for å finne PPID for en bestemt prosess.

$ nano> / dev / null &
$ pstree -p | grep 'nano' $ pstree -p | awk '/ nano / print $ NF'

Først har vi skapt en prosess i bakgrunnen ved å bruke den første kommandoen. Den andre kommandoen henter deretter PPID for denne prosessen ved å bruke grep-kommandoen i Linux. Til slutt viser den tredje kommandoen oss hvordan vi kan hente denne verdien ved hjelp av awk-kommandoen.

Metode 3: Bruke pgrep-kommandoen


Pgrep-kommandoen er en av de enkleste kommandoene for prosessadministrasjon i Linux. Den sjekker listen over alle kjørende prosesser og skriver ut PPID for en gitt prosess i standardutgangen eller terminalen i vårt tilfelle. Det fungerer ved å utføre regex-matching og er ekstremt godt egnet for å skrive Linux-skallskript.

$ nano> / dev / null &
$ pgrep 'nano'

Vi har skapt nano-prosessen på samme måte som de tidligere eksemplene. Så har vi fått PPID ved å bruke kommandoen pgrep. Når vi har oppnådd denne verdien, kan vi utføre Linux kill jobben veldig enkelt.

Metode 4: Bruke kommandoen pidof


Pidof-kommandoen er en annen enkel, men nyttig måte å bestemme PPID for en Linux-prosess. Den viser både PPID og alle andre PIDer knyttet til en prosess. Sjekk ut undersøkelsen nedenfor for å se hvordan du bruker dette i praksis.

$ nano> / dev / null &
$ pidof nano $ pidof -s nano

Når du bruker pidof-kommandoen for å sjekke kjørende prosesser i Linux, vil du ofte se flere PIDer. Vanligvis, i slike tilfeller, er det første eller siste nummeret PPID, avhengig av om de er i oppstigende eller nedstigende rekkefølge. Du kan bruke -s mulighet for pidof for å redusere dette. Den viser bare PPID-verdien.

Metode 5: Bruke den øverste kommandoen


Toppkommandoen gir en sanntidsvisning av alle prosesser som kjører i Unix-lignende operativsystemer. Du kan bruke dette til å vise Linux-oppgavelisten i terminalen din og finne ut PID-informasjonen til en bestemt prosess.

$ topp

Bruk følgende kommandoer for å hente PPID for en bestemt prosess fra utgangen fra toppkommandoen.

$ nano> / dev / null &
$ topp -n1 -b | grep 'nano' $ topp -n1 -b | awk '/ nano / print $ 1'

Siden toppen gir sanntidsutdata i stedet for å dumpe statiske data til terminalen, har vi brukt -n1 og -b alternativet for å skrive ut den statiske utgangen. Deretter kan du hente PPID-informasjonen ved å bruke enten grep-kommandoen eller awk-kommandoen i Linux.

Drep Linux-prosessen som ikke svarer


Du kan bruke en av de ovennevnte metodene for å hente PPID for prosessen som ikke svarer. Når du har fått dette, er det på tide å drepe prosessen helt. Det er flere kommandoer som lar oss gjøre dette, for eksempel drepe, pkill, og Drep alle. Vi får se hvordan de fungerer en etter en i de følgende avsnittene.

Metode 1: Bruke drepekommandoen


Killkommandoen brukes mye av Linux-administratorer på grunn av sin enkelhet og robuste handlinger. Det tar PID for prosessen og et signal. Kjernen dreper / stopper kjøringen av prosessen basert på dette signalet. Du kan bruke neste kommando for å vise alle tilgjengelige signaler til kill-kommandoen.

$ kill -l

Som du ser, tilbyr kill 64 forskjellige signaler. Imidlertid vil vi bare diskutere to av dem i denne guiden. Disse er signal 9 (SIGKILL) og signal 15 (SIGTERM). SIGTERM eller signal 15 er den sikre metoden for å drepe en prosess som ikke svarer. SIGKILL eller signal 9, derimot, dreper kraft en Linux-prosess.

$ kill -9 8631 $ kill -KILL 8631

Ovennevnte kommandoer er ekvivalente, og de vil tvinge drepe prosessen som har PID 8631. Det er PPID for prosessen 'nano' i systemet mitt. Erstatt dette med PID-en for den ikke-reagerende prosessen i systemet ditt.

$ kill -15 8631 $ kill -TERM 8631

Ovennevnte kommandoer er også ekvivalente og vil drepe prosessen elegant. Derfor kan det ta litt tid før prosessen blir drept. Videre kan det hende du må legge til sudo før kill-kommandoen hvis prosessen eies av en annen bruker.

Metode 2: Bruk pkill-kommandoen


Pkill-kommandoen er en av de mest allsidige kommandoene for prosessadministrasjon i Linux. Det lar oss drepe en ikke-reagerende prosess basert på navn, PID, eier og andre kjøretidsattributter. Det er et perfekt verktøy for å starte brukere eller personer som ikke er kjent med mange standard terminalkommandoer.

$ pkill nano $ pkill 8631 $ pkill -e nano $ pkill -f nano

Du kan bruke noen av de ovennevnte pkill-kommandoene for å drepe en zombie / ikke-reagerende prosess i Linux. Bruke -e alternativet hvis du vil ha en bekreftelse på Linux kill jobben. Pkill-kommandoen tillater også brukere å sende spesifikke avslutningssignaler.

Metode 3: Bruke killall Command


Med killall-kommandoen kan brukere drepe ikke-reagerende prosesser basert på navnene deres. Det er lettere å bruke, men kan utgjøre problemer hvis du ikke er forsiktig. Siden killall avslutter prosesser basert på navn, er det alltid en sjanse for at du ender med å drepe en prosess ved en tilfeldighet. For eksempel, hvis det er forskjellige versjoner av nano tilgjengelig i systemet ditt, vil det første eksemplet drepe dem alle.

$ killall nano $ killall --verbose nano $ killall - interactive nano $ killall --signal KILL nano

Det første eksemplet viser den grunnleggende bruken av killall-kommandoen i Linux. Den andre kommandoen vil rapportere om kill-jobben er vellykket eller ikke, og den tredje kommandoen vil be brukeren om bekreftelse før den dreper prosessen. Som standard bruker killall SIGTERM-signalet for å drepe prosesser. Du kan imidlertid spesifisere signalet manuelt, som vist i det siste eksemplet.

Metode 4: Bruke Handy One-Liners


Den sanne skjønnheten til Linux ligger i det faktum at den lar brukerne lage sofistikerte kommandokombinasjoner basert på deres behov. For å demonstrere dette har vi skissert noen få enkeltsett i avsnittet.

$ nano> / dev / null &
$ kill -9 $ (pgrep nano) $ ps aux | grep -e 'nano' | awk 'print $ 2' | xargs drepe -9

I det første eksemplet har vi brukt skallinterpolasjon for å overføre PID for prosessen 'nano' til Linux kill-kommandoen. Det andre eksemplet bruker flere daglige terminalkommandoer og I / O-omdirigering for å drepe prosessen. Du kan kurere dine egne smarte enlinjer når du er komfortabel med Linux-terminalen.

Metode 5: Drep flere prosesser ved bruk av Linux Shell-skript


Noen ganger vil brukere kanskje avslutte mer enn en enkelt prosess. Vi kan enkelt automatisere slike oppgaver ved å skrive enkle skallskript. Hvis du er interessert i dette emnet, kan du sjekke vår forrige guide om Linux-skallskript. Følgende skript vil hente PPID for prosessene du vil drepe, og deretter avslutte dem ved hjelp av drepsignaler.

$ nano proc-killer.sh
#!/ usr / bin / env bash for pro i "$ @" do pid = $ (pgrep $ pro | head -1) echo $ pid comm = "kill -9 $ pid" eval $ comm done

Lagre nå denne filen og legg til kjøringstillatelse ved å utstede kommandoen nedenfor.

$ chmod + x proc-killer.sh

Du kan nå sende dette skriptet navnet på prosessene du vil avslutte.

$ ./ proc-killer.sh nano gedit vlc

Bare erstatt argumentene med navnene på de ikke-responsive Linux-prosessene i systemet ditt.

Avslutte en ikke-responsiv prosess fra GUI


Du kan også avslutte en ikke-responsiv prosess fra det grafiske brukergrensesnittet eller X-vinduet. Vi diskuterer to metoder for å gjøre dette i det følgende avsnittet.

Metode 1: Bruke xkill-applikasjonen


Moderne Linux-distribusjoner bruker det grafiske X-vinduet for å gi brukerne en elegant grafisk opplevelse. Det er et enkelt verktøy kalt xkill som lar brukerne lukke et GUI-vindu som ikke svarer. Det er mulig siden tittelvinduet til et program i Linux er skilt fra selve programmet.

Bare gå til Linux-terminalemulatoren og skriv inn xkill. Det vil forvandle musepekeren til en X-knapp, som kan brukes til å drepe ethvert GUI-vindu.

$ xkill

Nå, alt du trenger å gjøre er å bare klikke på applikasjonens vinduslinje, så blir den drept og forsvinner umiddelbart.

Metode 2: Bruke System Monitor Application på Ubuntu


De fleste vanlige Linux-distribusjoner kommer med et slags GUI-overvåkingsverktøy som lar brukerne avslutte en henget Linux-prosess grafisk. For eksempel vil System Monitor-applikasjonen på Ubuntu gjøre oss i stand til å avslutte en ikke-responsiv prosess på en intuitiv måte. Du kan ganske enkelt velge den døde prosessen fra prosesslisten og drepe den ved å høyreklikke på prosessen og velge drapealternativet.

Det er mange flere alternativer til dette programmet, og vi er sikre på at du enkelt kan finne et for distribusjons- eller skrivebordsmiljøet ditt.

Avslutte tanker


Siden prosessadministrasjon i Linux er veldig allsidig, blir brukere ofte frustrerte når de håndterer ikke reagerende prosesser. Det er derfor redaktørene våre har skissert alle mulige måter å avslutte en død Linux-prosess i denne guiden. Etter å ha lest dette, bør du kunne drepe eventuelle ikke-reagerende prosesser enten fra kommandolinjen eller fra GUI. Du kan også bruke en av våre one-liner-kommandoer for å håndtere slike plager på kortest mulig tid. Videre kan du til og med drepe mer enn en enkelt prosess ved å bruke vårt enkle skallskript. Så forhåpentligvis fikk du informasjonen du var ute etter fra guiden vår.

Beste spillkonsollemulatorer for Linux
Denne artikkelen vil liste opp populære programvare for spillkonsollemulering tilgjengelig for Linux. Emulation er et programvarekompatibilitetslag so...
Beste Linux Distros for spill i 2021
Linux-operativsystemet har kommet langt fra det originale, enkle, serverbaserte utseendet. Dette operativsystemet har forbedret seg enormt de siste år...
Hvordan fange opp og streame spilløkten din på Linux
Tidligere ble spill bare ansett som en hobby, men med tiden så spillindustrien en enorm vekst når det gjelder teknologi og antall spillere. Spillpubli...