Skip to main content

Hvordan drepe prosesser ved hjelp av Linux

Loneliness (April 2025)

Loneliness (April 2025)
Anonim

Mesteparten av tiden vil du at et program skal ende med egne midler, eller, hvis det er et grafisk program, ved å bruke det riktige menyalternativet eller ved å bruke krysset i hjørnet.

Hvert så ofte vil et program henge, i så fall vil du trenge en metode for å drepe den. Du vil kanskje også drepe et program som kjører i bakgrunnen du ikke lenger trenger å kjøre.

Denne veiledningen gir en metode for å drepe alle versjoner av samme program som kjører på systemet.

Slik bruker du Killall-kommandoen

Killall-kommandoen dreper alle prosessene ved navn. Det betyr at hvis du har tre versjoner av det samme programmet som kjører, vil killall-kommandoen drepe alle tre.

For eksempel, åpne et lite program slik en bildeviser. Åpne nå en annen kopi av samme bildeviser. For mitt eksempel har jeg valgt Xviewer som er en klone av Eye Of Gnome.

Åpne nå en terminal og skriv inn følgende kommando:

Drep alle

For eksempel å drepe alle forekomster av Xviewer skriver du følgende:

killall xviewer

Begge forekomster av programmet du har valgt å drepe, lukkes nå.

Drep den nøyaktige prosessen

Killall kan produsere merkelige resultater. Vel her er en grunn til hvorfor. Hvis du har et kommandoenavn som er over 15 tegn langt, vil killall-kommandoen bare fungere på de første 15 tegnene. Hvis du derfor har to programmer som deler de samme 15 tegnene, blir begge programmene kansellert, selv om du bare ville drepe en.

For å komme seg rundt dette kan du angi følgende bryter som bare vil drepe filer som samsvarer med det eksakte navnet.

killall -e

Ignorer tilfelle når du dreper programmer

For å sikre at killall-kommandoen ignorerer tilfellet av programnavnet du oppgir, bruker du følgende kommando:

killall -Ikillall --ignore-case

Drep alle programmer i samme gruppe

Når du kjører en kommando som den følgende, vil den opprette to prosesser:

ps -ef | mindre

En kommando er for ps -ef-delen som viser alle løpende prosesser på systemet ditt og utgangen pipes til den mindre kommandoen.

Begge programmene tilhører samme gruppe som er bash.

For å drepe begge programmene samtidig kan du kjøre følgende kommando:

killall -g

For eksempel for å drepe alle kommandoer som kjører i et bash-skjell, kjør følgende:

killall-g bash

For øvrig å liste alle løpende grupper, kjør følgende kommando:

ps -g

Få bekreftelse før du dreper programmer

Åpenbart er killall-kommandoen ganske kraftig, og du vil ikke ved et uhell drepe feil prosesser.

Ved hjelp av følgende bryter blir du spurt om du er sikker før hver prosess blir drept.

killall -i

Drep prosesser som har eksistert i en viss mengde tid

Tenk deg at du har kjørt et program, og det tar mye lengre tid enn du håpet det ville.

Du kan drepe kommandoen på følgende måte:

killall -o h4

H i kommandoen ovenfor står for timer.

Du kan også angi et av følgende:

  • s - sekunder
  • m - minutter
  • h - timer
  • d-dager
  • w - uker
  • M - måneder
  • y - år

Alternativt, hvis du ønsker å drepe kommandoer som bare har begynt å løpe, kan du bruke følgende bryter:

killall -y h4

Denne gangen vil killall-kommandoen drepe alle programmer som kjører i mindre enn 4 timer.

Ikke fortell meg når en prosess ikke blir drept

Som standard hvis du prøver å drepe et program som ikke kjører, vil du få følgende feil:

Programnavn: Ingen prosess funnet

Hvis du ikke vil bli fortalt om prosessen ikke ble funnet, bruk følgende kommando:

killall -q

Bruke vanlige uttrykk

I stedet for å angi navnet på et program eller en kommando, kan du angi et regulært uttrykk, slik at alle prosesser som samsvarer med det vanlige uttrykket, stenges av killall-kommandoen.

For å bruke et regulært uttrykk, bruk følgende kommando:

killall -r

Drep programmer for å spesifisere bruker

Hvis du vil drepe et program som kjøres av en bestemt bruker, kan du angi følgende kommando:

killall -u

Hvis du vil drepe alle prosessene for en bestemt bruker, kan du utelate programnavnet.

Vent for killall å fullføre

Som standard kommer killall tilbake direkte til terminalen når du kjører det, men du kan tvinge killall til å vente til alle prosessene som er angitt, er stengt før du returnerer deg til terminalvinduet.

For å gjøre dette, kjør følgende kommando:

killall -w

Hvis programmet aldri dør, vil killall også fortsette å leve videre.

Signaler Signalsignaler

Som standard sender killall-kommandoen SIGTERM-signalet til programmer for å få dem til å lukke, og dette er den reneste metoden for å drepe programmer.

Det er imidlertid andre signaler du kan sende ved hjelp av killall-kommandoen, og du kan liste dem ved hjelp av følgende kommando:

killall -l

Listen som returneres vil være noe slikt:

  • HUP
  • INT
  • SLUTTE
  • JEG VIL
  • FELLE
  • ABRT
  • IOT
  • BUSS
  • FPE
  • DREPE
  • USR1
  • SEGV
  • USR2
  • RØR
  • ALRM
  • BEGREP
  • STKFLT
  • chld
  • CONT
  • STOPPE
  • TSTP
  • TTIN
  • TTOU
  • URG
  • XCPU
  • XFSZ
  • VTALRM
  • PROG
  • WYNCH
  • IO
  • PWR
  • SYS
  • UBRUKT

Den listen er ekstremt lang. For å lese om hva disse signalene betyr, kjør følgende kommando:

mann 7 signal

Vanligvis bør du bruke standard SIGTERM-alternativet, men hvis programmet nekter å dø, kan du bruke SIGKILL som tvinger programmet til å lukke om enn på en uverdig måte.

Andre måter å drepe et program på

Det er 5 andre måter å drepe et Linux-program som fremhevet i den lenke guiden.

Men for å spare deg innsatsen for å klikke på lenken her er en del som viser hva disse kommandoene er, er hvorfor du kanskje bruker disse kommandoene over killall.

Den første er kill kommandoen. Killall-kommandoen som du har sett, er flott når du dreper alle versjoner av det samme programmet. Kill kommandoen er designet for å drepe en prosess om gangen og er derfor mer målrettet.

For å kjøre kill-kommandoen må du kjenne prosess-IDen til prosessen du ønsker å drepe. For dette kan du bruke ps-kommandoen.

For eksempel for å finne en løpende versjon av Firefox kan du kjøre følgende kommando:

ps -ef | grep firefox

Du vil se en linje med data med kommandoen / usr / lib / firefox / firefox på slutten. På begynnelsen av linjen vil du se bruker-ID og nummer etter at bruker-ID er prosess-ID.

Ved hjelp av prosess-ID kan du drepe Firefox ved å kjøre følgende kommando:

drepe -9

En annen måte å drepe et program på er å bruke xkill-kommandoen. Dette brukes vanligvis til å drepe misbehavende grafiske applikasjoner.

For å drepe et program som Firefox, åpne en terminal og kjør følgende kommando:

xkill

Markøren vil nå bytte til et stort hvitt kryss. Hold markøren over vinduet du ønsker å drepe, og klikk med venstre museknapp. Programmet avsluttes umiddelbart.

En annen måte å drepe en prosess på er å bruke Linux øverste kommandoen. Den øverste kommandoen viser alle løpende prosesser på systemet.

Alt du trenger å gjøre for å drepe en prosess er å trykke på "k" -tasten og angi prosess-IDen til søknaden du ønsker å drepe.

Tidligere i dette avsnittet drepte kommandoen, og det påkrevde at du fant prosessen ved hjelp av ps-kommandoen, og deretter drep prosessen ved å bruke kommandoen Kill. Dette er ikke det enkleste alternativet på noen måte.

For en ting returnerer ps-kommandoen masse informasjon du ikke trenger. Alt du ønsket var prosess-ID. Du kan få prosess-ID mer enkelt ved å kjøre følgende kommando:

pgrep firefox

Resultatet av kommandoen ovenfor er ganske enkelt prosess-IDen til Firefox. Du kan nå kjøre kill kommandoen som følger:

drepe

(Erstatte med den faktiske prosess-ID returnert av pgrep).

Det er faktisk lettere å bare gi programnavnet til pkill som følger:

pkill firefox

Til slutt kan du bruke et grafisk verktøy som den som følger med Ubuntu kalt "System Monitor". For å kjøre "System Monitor" trykk supernøkkelen (Windows-tast på de fleste datamaskiner) og skriv "sysmon" i søkefeltet. Når systemmonitorikonet vises, klikker du på det.

Systemmonitoren viser en liste over prosesser. For å avslutte et program på en ren måte, velg det og trykk på sluttasten nederst på skjermen (eller trykk CTRL og E). Hvis dette ikke fungerer, enten høyreklikk og velg "Kill" eller trykk CTRL og K på prosessen du ønsker å drepe.