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 – top
ps
pidof
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.
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 vilps
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.
fordelen med å bruke ps
er at du enkelt kan filtrere denne listen med grep
kommandoen. For eksempel, for å finne en prosess knyttet til begrepet «vnstat», kan du bruke:
ps aux | grep -i vnstat
her fikk vi to resultater — vnstatd
prosessen, samtgrep
prosessen. Siden vi søkte etter alle forekomster av begrepet «vnstat», og vi kjørte ogsågrep
med «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:
Så, selv om vi fikk et resultat, er det ingen prosesser som er av interesse for oss.
Finne PID med pidof og pgrep
top
ogps
grep
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.
hvis du ikke vet fullt navn, kan du brukepgrep
i 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.
pidof
ogpkill
kommandoene gir deg langt mindre informasjon. Som vi skal se i neste avsnitt, er det noen omstendigheter der du ikke kan drepe en prosess. Utgangen avtop
ogps
inneholder 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 top
og 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 top
ps
utgang.
Drepe en prosess
det finnes ulike kommandoer du kan bruke til å drepe en prosess- kill
killall
pkill
og 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 -o
og-y
flaggene. 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 pgrep
pkill
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 -SIGKILL
i 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 🙂