Boolsk Verden

linux kill cover image

i et operativsystem er det mange programmer, som enten kan kjøres av en bruker eller AV OS selv (for eksempel systemtjenester). Slike programmer som kjører på systemet kalles «prosesser». Vanligvis avsluttes en prosess alene når de er ferdige med oppgaven, eller når du ber dem om å slutte ved å trykke på en hurtigtast eller klikke på «Lukk» – knappen.

men noen ganger kan en prosess henge opp eller forbruke MYE CPU eller RAM. I denne situasjonen vil du manuelt «drepe» prosessen. I denne artikkelen vil vi se på ulike verktøy du kan bruke til å drepe prosesser på Et Linux-system.

Finne prosessen for å drepe

for å drepe en prosess, bør du først finne detaljene i prosessen. Du kan gjøre dette gjennom tre kommandoer – toppspidof og pgrep. Avhengig av situasjonen kan du bruke en av disse kommandoene til dette formålet.

Som vi vil se senere i denne artikkelen, kan du drepe en prosess ved navn eller prosess-ID (PID). PID ER et tall som unikt identifiserer en prosess. Killing av prosessen ID er nyttig når du ønsker å drepe bare en bestemt prosess. På den annen side er drap av prosessnavnet nyttig når du vil drepe alle løpende forekomster av et bestemt program.

Lokalisere prosessen med toppkommandoen

vi vil først se påtop kommandoen. Brann opp toppkommandoen ved å skrive:

top

du får et interaktivt grensesnitt, som vist nedenfor. Du kan bla gjennom denne listen for å finne navnet ELLER PID av prosessen du vil drepe.

den øverste kommandoen viser en liste over prosesser.

for å bla gjennom denne listen, kan du bruke opp / ned-tastene. I tillegg har toppkommandoen også måter å filtrere prosesser ETTER CPU-bruk, bruker-og prosessnavn, som du kan lese om i denne veiledningen.

den venstre kolonnen inneholder pid av prosessen, og høyre side inneholder programnavnet. Som et eksempel, i skjermbildet ovenfor har vi vnstatd prosess som kjører med EN PROSESS-ID på 263.

Finne prosessen med ps og grep kommandoer

En annen måte å få en liste over prosessen er ved å kjøre:

ps aux

i kommandoen ovenfor har vi brukt flaggene aux som har følgende betydninger:

  • a: vis prosesser for alle brukere
  • u: vis brukeren som bruker prosessen
  • x: vis alle prosesser. (Uten dette vil ps ikke vise prosesser som kjører I ET GUI-miljø.)

utgangen av kommandoen ligner på top. PID er tilgjengelig i andre kolonne fra venstre, og prosessnavnet er tilgjengelig i kolonnen lengst til høyre.

resultatene av kommandoen "ps aux"."ps aux" command.

fordelen med å bruke pser at du enkelt kan filtrere denne listen med grepkommandoen. For eksempel, for å finne en prosess knyttet til begrepet «vnstat», kan du bruke:

ps aux | grep -i vnstat

Filtreringsprosesser med ps og grep, med et positivt resultat.

her fikk vi to resultater — vnstatd prosessen, samtgrep prosessen. Siden vi søkte etter alle forekomster av begrepet «vnstat», og vi kjørte ogsågrepmed «vnstat» som argument, fikk vi grep også i resultatene.

selv når det ikke er noen «vnstat» – relaterte prosesser som kjører, vil Vi få en oppføring som visergrep prosess:

Filtreringsprosesser med ps og grep.

Så, selv om vi fikk et resultat, er det ingen prosesser som er av interesse for oss.

Finne PID med pidof og pgrep

topogpsgrep kombinasjonen lar oss søke etter prosesser. På den annen side, hvis du vet nøyaktig navnet på en prosess, kan du bruke pidof for å finne SIN PID.

Å Bruke pidof er ganske grei. For Å få PIDs av en prosess med det eksakte navnet «nginx», bruk:

pidof nginx

hvis det er prosesser med det eksakte navnet «nginx», vil Du få en liste Over PIDs, som vist nedenfor. Hvis det ikke er noen, får du ingenting som utgangen.

pidof-kommandoen

hvis du ikke vet fullt navn, kan du brukepgrepi stedet forpidof. For eksempel, for å søke etter alle prosesser som inneholder «ngin» et sted i deres navn, kjør:

pgrep ngin

dette vil matche prosesser med det eksakte navnet «nginx», samt enhver annen prosess som samsvarer med de samme kriteriene. For vårt system, legg merke til at vi får alle PIDs som tilhørte «nginx» i skjermbildet ovenfor.

pgrep-kommandoen.

pidofogpkillkommandoene gir deg langt mindre informasjon. Som vi skal se i neste avsnitt, er det noen omstendigheter der du ikke kan drepe en prosess. Utgangen avtopogpsinneholder tilleggsinformasjon som hjelper deg med å avgjøre om du virkelig kan drepe en prosess.

Hvilke prosesser kan du drepe?

Nå som vi har funnet prosessen, er det på tide å drepe den. Men før vi lærer hvordan du gjør det, er det noen ting du trenger å vite.

hvis du er en vanlig bruker, kan du drepe dine egne prosesser, men ikke de som tilhører andre brukere. Både topog ps viser brukeren som en prosess kjører under. I tilfelle top inneholder den andre kolonnen brukernavnet. Med ps aux inneholder den første kolonnen brukernavnet.

en rotbruker kan imidlertid drepe alle prosesser. Du kan enten legge tilsudo før en kommando for å kjøre den som rot, eller få et rotskall ved å skrive su, og deretter utføre kommandoen.

I Linux, når en prosess blir drept, leveres et «avslutningssignal» til prosessen. Selv om det er mange forskjellige typer signaler, håndterer vi for det meste» SIGTERM «og» SIGKILL » signaler. De har en numerisk verdi på henholdsvis 15 og 9. Som standard bruker alle prosessdrapskommandoene «SIGTERM», som gjør at programmet kan kjøre noen kode før det går ut, slik at det kan avslutte «grasiøst». Hvis du vil avslutte prosessen med tvang, kan du bruke «SIGKILL» i stedet.

Linux-kjernen opprettholder noe informasjon relatert til tilstanden til en prosess. Når en prosess avsluttes, må kjernen holde informasjonen rundt, slik at foreldreprosessen kan finne ut om barneprosessen var i stand til å fullføre sine oppgaver og om den avsluttet alene, eller den ble drept. Inntil foreldrene har gjort det, vil disse «zombie» prosessene vises i listen over prosesser. Du kan ikke drepe en slik prosess fordi det bare er en oppføring i listen over alle prosesser, og det har ikke en faktisk prosess knyttet til den.

når en prosess utfører input/output-operasjoner (som å lese fra eller skrive til disker), sies det å være i en tilstand av «avbruddsfri søvn». Du kan ikke drepe en prosess mens den er i denne tilstanden.

du kan se om en prosess er i»zombie «(Z) eller»avbruddsfri søvn» (D) tilstand ved å se på den 8.kolonnen i topps utgang.

Drepe en prosess

det finnes ulike kommandoer du kan bruke til å drepe en prosess- killkillallpkillog top. Vi starter fra den enkleste: kommandoenkillall.

Drepe prosesser med killall kommandoen

killall kommandoen er en av de enkleste måtene å drepe en prosess. Hvis du vet det nøyaktige navnet på en prosess, og du vet at den ikke kjører som en annen bruker, og det ikke er I z-eller D-statene, kan du bruke denne kommandoen direkte.som standard, for eksempel å drepe en prosess som heter «firefox», kjør:

killall firefox

for å tvinge prosessen MED SIGKILL, kjør:

killall -9 firefox

du kan også bruke -SIGKILL i stedet for -9.

hvis du vil drepe prosesser interaktivt, kan du bruke -i som så:

killall -i firefox

sudo:

sudo killall firefox

du kan også drepe en prosess som har kjørt i en viss periode med -oog-yflaggene. Så, hvis du vil drepe en prosess som har kjørt i mer enn 30 minutter, bruk:

killall -o 30m <process-name>

hvis du vil drepe en prosess som har kjørt i mindre enn 30 minutter, bruk:

killall -y 30m <process-name>

På Samme måte bruker du følgende forkortelser for de respektive tidsenhetene:

s seconds
m minutes
h hours
d days
w weeks
M months
y years

Killing processes with the pkill command

Sometimes, you only know part of a program’s name. Akkurat som pgreppkill lar deg drepe prosesser basert på delvise treff. Hvis du for eksempel vil drepe alle prosesser som inneholder navnet apache i navnet, kjør:

pkill apache

hvis DU vil bruke EN SIGKILL i stedet FOR EN SIGTERM, bruk:

pkill -9 apache

Igjen kan du også bruke -SIGKILLi stedet for -9.

Drepe prosesser med kill kommandoen

Bruke kill kommandoen er grei. Når DU har funnet UT PID av prosessen du vil drepe, kan du avslutte den ved hjelp av kommandoenkill. For eksempel, hvis du vil drepe en prosess med EN PID på 1234, bruk deretter følgende kommando:

kill 1234

som vi nevnte tidligere, er standard å bruke EN SIGTERM. FOR Å bruke EN SIGKILL, bruk -9 eller -SIGKILL som vi har sett før:

kill -9 1234

Drep prosesser med toppkommandoen

det er veldig enkelt å drepe prosesser ved hjelp av top kommando. Først, søk etter prosessen du vil drepe og merk PID. Trykk deretter k mens top kjører(dette skiller mellom store og små bokstaver). Det vil be DEG om å skrive INN PID av prosessen du vil drepe.

når DU har tastet INN PID, trykker du på enter. Nå vil det spørre hvilket signal du vil bruke til å drepe prosessen. HVIS DU vil bruke SIGTERM(15), trykk bare enter som det er standardsignalet. HVIS DU vil bruke SIGKILL (9), skriv deretter 9 og trykk enter.

hvis du lar PROSESS-ID-en stå tom og trykker enter direkte, vil den avslutte den øverste prosessen i listen. Du kan bla med piltastene, og endre prosessen du vil drepe på denne måten.

Konklusjon

i dette innlegget så vi de ulike måtene å drepe prosesser I Linux. Å lære disse kommandoene er avgjørende for riktig systemadministrasjon og-styring. Hvis du vil utforske flere av disse kommandoene, ta en titt på deres respektive man-sider.

hvis du likte dette innlegget, vennligst del det 🙂

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.