AZ-kommandoer

Sådan dræbes eller afbrydes en Linux-proces Den ultimative guide

Sådan dræbes eller afbrydes en Linux-proces Den ultimative guide

Multiprocessing-operativsystemer som Linux og BSD'er anvender flere metoder til at maksimere CPU-udnyttelse. En proces er simpelthen et program, der udføres. Da der kører mere end en Linux-proces på et givet tidspunkt, er processtyring i Linux yderst afgørende. Brugere står ofte over for problemer som CPU-ressourcebegrænsning, når de kører for mange programmer. Situationer som denne opstår, når CPU'en ikke håndterer det voksende antal processer. Selvom dette ikke helt afhænger af kraften i din CPU, kan håndtering af hængte eller zombie-processer være ret frustrerende. For at hjælpe dig med at afbøde sådanne hændelser skitserer vi nogle standardmetoder til at dræbe disse processer.

Master ikke-responsiv processtyring i Linux


Du lærer flere måder at afslutte en Linux-proces, der slet ikke reagerer. Hvis du kommer fra Windows, er du muligvis bekendt med Ctrl + Alt + Slet. Tilsvarende har Mac-brugere Command + Option + Escape-metoden til at dræbe frosne processer. Linux er meget mere alsidig end dets kolleger og tilbyder mere end en metode til at tackle døde / ikke-reagerende processer.

Forskellige metoder til at dræbe en død Linux-proces


Vi skitserer hovedsageligt to metoder til at dræbe zombieprocesser. Vi bruger Linux-terminalen til den første metode. Til dette skal vi først identificere proces-id'et. Når det er opnået med succes, kan vi bruge denne PID til at dræbe programmet ved at sende specifikke signaler til det PID.

Du vil også lære at udføre sådanne Linux-kill-job fra den grafiske brugergrænseflade eller X-vinduet. Vi vil udnytte 'System Monitor' applikation tilgængelig i Ubuntu til dette. Selvom dette er en GNOME-applikation, er lignende værktøjer tilgængelige til andre Linux-skrivebordsmiljøer.

Afslut en ikke-reaktionsproces fra kommandolinjen


Der er flere værktøjer til at afslutte en ikke-reagerende eller hængt proces fra kommandolinjen, herunder dræbe, pkill, og Dræb alle. Disse kommandoer fungerer ved at sende specifikke signaler til disse processer, der ikke reagerer. Du får brug for proces-id eller PID oplysninger, så du kan sende dem det nødvendige afslutningssignal.

PID eller proces-id er et unikt nummer, der identificerer en proces. Disse oprettes af Linux-kernen under runtime, og procesplanlæggeren styrer deres CPU-aktiviteter. Så når du påberåber en applikation, vil kernen først gyde de nødvendige processer og tildele dem disse unikke PID-værdier. Der kan være flere PID'er forbundet med en proces. Desuden har hver proces en eneforældreproces med en unik PPID (Parent Process ID).

Så hvis du kan finde ud af denne PPID, kan du sende et drabssignal ved hjælp af programmer designet til dette formål. Nedenfor lærer du, hvordan du kontrollerer kørende processer i Linux og identificerer deres PPID fra terminalen.

Find ud af PPID-oplysningerne


Du kan finde ud af PPID for en proces ved hjælp af flere processtyringskommandoer i Linux, såsom pidof, pstree, og pgrep. Lad os undersøge dem en efter en og se, hvordan man opnår PID for en Linux-proces.

Metode 1: Brug af kommandoen ps


Ps-kommandoen i Linux viser alle kørende processer sammen med andre procesrelaterede oplysninger som PID i terminalen. Vi kan bruge denne kommando til at liste alle processer og derefter filtrere en bestemt proces ud ved hjælp af Linux grep-kommandoer. Det skal vise os de proces-id-oplysninger, vi er interesserede i.

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

For det første har vi påberåbt en Linux-teksteditor i baggrunden. Så har vi brugt ps-kommandoen sammen med grep-kommandoen for at finde ud af PPID for denne editor. Outputtet kan indeholde flere proces-id'er, men vi er kun interesserede i den første, da det er vores PPID. Vi kan også bruge kommandoen Linux awk til at finde ud af disse oplysninger, som vist nedenfor.

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

Denne kommando er mere fleksibel, da den undertrykker al irrelevant information. Det viser kun de PPID-oplysninger, vi leder efter.

Metode 2: Brug af pstree-kommandoen


Pstree-kommandoen giver os en trælignende visning af alle kørende processer. Det giver en grafisk visning af Linux-opgavelisten fra terminalvinduet. Du kan se PPID såvel som alle PID-oplysningerne i en proces ved hjælp af denne kommando. Tjek nedenstående eksempler for at lære at udnytte pstree til at finde PPID for en bestemt proces.

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

For det første har vi skabt en proces i baggrunden ved hjælp af den første kommando. Den anden kommando henter derefter PPID for denne proces ved hjælp af grep-kommandoen i Linux. Endelig viser den tredje kommando os, hvordan vi kan hente denne værdi ved hjælp af kommandoen awk.

Metode 3: Brug af pgrep-kommandoen


Pgrep-kommandoen er en af ​​de nemmeste kommandoer til processtyring i Linux. Det kontrollerer listen over alle kørende processer og udskriver PPID for en given proces i standardoutputtet eller terminalen i vores tilfælde. Det fungerer ved at udføre regex-matching og er ekstremt velegnet til at skrive Linux-shell-scripts.

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

Vi har skabt nano-processen på samme måde som de tidligere eksempler. Så har vi fået dets PPID ved hjælp af kommandoen pgrep. Når vi først har opnået denne værdi, kan vi udføre Linux kill job meget let.

Metode 4: Brug af pidof-kommandoen


Pidof-kommandoen er en anden enkel, men nyttig måde at bestemme PPID for en Linux-proces på. Det viser både PPID og alle andre PID'er, der er knyttet til en proces. Tjek nedenstående undersøgelse for at se, hvordan du bruger dette i praksis.

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

Når du bruger pidof-kommandoen til at kontrollere kørende processer i Linux, vil du ofte se flere PID'er. Normalt er det første eller det sidste nummer i sådanne tilfælde PPID, afhængigt af om de er i en stigende rækkefølge eller i nedadgående rækkefølge. Du kan bruge -s mulighed for pidof for at afbøde dette. Det viser kun PPID-værdien.

Metode 5: Brug af den øverste kommando


Topkommandoen giver et realtidsbillede af alle kørende processer i Unix-lignende operativsystemer. Du kan bruge dette til at vise Linux-opgavelisten i din terminal og finde ud af PID-oplysningerne for en bestemt proces.

$ top

Brug følgende kommandoer til at hente PPID for en bestemt proces fra output fra den øverste kommando.

$ nano> / dev / null &
$ top -n1 -b | grep 'nano' $ top -n1 -b | awk '/ nano / udskriv $ 1'

Da top giver realtidsoutput i stedet for at dumpe statiske data til terminalen, har vi brugt -n1 og -b mulighed for at udskrive det statiske output. Derefter kan du hente PPID-oplysningerne ved hjælp af enten grep-kommandoen eller awk-kommandoen i Linux.

Dræb den ikke-responsive Linux-proces


Du kan bruge en af ​​ovenstående metoder til at hente PPID for den ikke-reagerende proces. Når du først har opnået dette, er det tid til at dræbe processen helt. Der er flere kommandoer, der tillader os at gøre dette, såsom dræbe, pkill, og Dræb alle. Vi får se, hvordan de fungerer en efter en i de følgende afsnit.

Metode 1: Brug af kill-kommandoen


Kill-kommandoen bruges i vid udstrækning af Linux-administratorer på grund af dens enkelhed og robuste handlinger. Det tager PID for processen og et signal. Kernen dræber / stopper udførelsen af ​​processen baseret på dette signal. Du kan bruge den næste kommando til at se alle tilgængelige signaler til kill-kommandoen.

$ kill -l

Som du kan se, tilbyder kill 64 forskellige signaler. Vi vil dog kun diskutere to af dem i denne vejledning. Disse er signal 9 (SIGKILL) og signal 15 (SIGTERM). SIGTERM eller signal 15 er den sikre metode til at dræbe en ikke-reagerende proces. SIGKILL eller signal 9 dræber på den anden side en Linux-proces.

$ kill -9 8631 $ kill -KILL 8631

Ovenstående kommandoer er ækvivalente, og de tvinger til at dræbe den proces, der har PID 8631. Det er PPID for processen 'nano' i mit system. Udskift dette med PID for den ikke-reagerende proces i dit system.

$ kill -15 8631 $ kill -TERM 8631

Ovenstående kommandoer er også ækvivalente og vil dræbe processen yndefuldt. Det kan derfor tage noget tid, før processen dræbes. Desuden skal du muligvis tilføje sudo før kill-kommandoen, hvis processen ejes af en anden bruger.

Metode 2: Brug af pkill-kommandoen


Pkill-kommandoen er en af ​​de mest alsidige kommandoer til processtyring i Linux. Det giver os mulighed for at dræbe en ikke-responsiv proces baseret på dens navn, PID, ejer og andre runtime-attributter. Det er et perfekt værktøj til at starte brugere eller personer, der ikke er fortrolige med mange standardterminalkommandoer.

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

Du kan bruge en af ​​de ovennævnte pkill-kommandoer til at dræbe en zombie / ikke-reagerende proces i Linux. Brug -e mulighed, hvis du vil have en bekræftelse på Linux-kill job. Pkill-kommandoen giver også brugerne mulighed for at sende specifikke afsluttende signaler.

Metode 3: Brug af killall-kommandoen


Kommandoen killall giver brugerne mulighed for at dræbe processer, der ikke svarer, baseret på deres navne. Det er lettere at bruge, men kan udgøre problemer, hvis du ikke er forsigtig. Da killall afslutter processer baseret på navne, er der altid en chance for at du ender med at dræbe en proces tilfældigt. For eksempel, hvis der findes forskellige versioner af nano i dit system, vil det første eksempel dræbe dem alle.

$ killall nano $ killall --verbose nano $ killall - interaktiv nano $ killall - signal KILL nano

Det første eksempel viser den grundlæggende brug af killall-kommandoen i Linux. Den anden kommando vil rapportere, om kill-jobbet er vellykket eller ej, og den tredje kommando vil bede brugeren om bekræftelse, før det dræber processen. Som standard bruger killall SIGTERM-signalet til drabsprocesser. Du kan dog specificere signalet manuelt som vist i sidste eksempel.

Metode 4: Brug af praktiske one-liners


Den sande skønhed ved Linux ligger i, at det giver brugerne mulighed for at oprette sofistikerede kommandokombinationer baseret på deres behov. For at demonstrere dette har vi skitseret et par one-liners i afsnittet.

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

I det første eksempel har vi brugt shell-interpolation til at overføre PID for processen 'nano' til Linux kill-kommandoen. Det andet eksempel bruger flere daglige terminalkommandoer og I / O-omdirigering til at dræbe processen. Du kan kurere dine egne nifty one-liners, når du er fortrolig med Linux-terminalen.

Metode 5: Dræb flere processer ved hjælp af Linux Shell-scripts


Nogle gange vil brugerne muligvis afslutte mere end en enkelt proces. Vi kan nemt automatisere sådanne opgaver ved at skrive enkle shell-scripts. Hvis du er interesseret i dette emne, skal du tjekke vores tidligere vejledning om Linux-shell-scripts. Det følgende script henter PPID for de processer, du vil dræbe, og afslutter dem derefter ved hjælp af kill-signaler.

$ 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

Gem nu denne fil og tilføj eksekveringstilladelse ved at udstede kommandoen nedenfor.

$ chmod + x proc-killer.sh

Du kan nu give dette script navnet på de processer, du vil afslutte.

$ ./ proc-morder.sh nano gedit vlc

Du skal blot erstatte argumenterne med navnene på de ikke-responsive Linux-processer i dit system.

Afslut en proces, der ikke svarer fra GUI


Du kan også afslutte en ikke-responsiv proces fra den grafiske brugergrænseflade eller X-vinduet. Vi diskuterer to metoder til at gøre dette i det følgende afsnit.

Metode 1: Brug af xkill-applikationen


Moderne Linux-distributioner bruger det grafiske X-vindue til at give brugerne en elegant grafisk oplevelse. Der er et simpelt værktøj kaldet xkill, der giver brugerne mulighed for at lukke et GUI-vindue, der ikke svarer. Det er muligt, da titelfinduet i en applikation i Linux er adskilt fra selve applikationen.

Gå blot til din Linux-terminalemulator og skriv xkill. Det vil omdanne din musemarkør til en X-knap, som kan bruges til at dræbe ethvert GUI-vindue.

$ xkill

Nu er alt, hvad du skal gøre, bare at klikke på applikationens vinduesbjælke, der ikke svarer, og den bliver dræbt og forsvinder med det samme.

Metode 2: Brug af System Monitor-applikationen på Ubuntu


De fleste almindelige Linux-distributioner kommer med en slags GUI-overvågningsværktøjer, der giver brugerne mulighed for at afslutte en hængt Linux-proces grafisk. For eksempel vil System Monitor-applikationen på Ubuntu gøre det muligt for os at afslutte en ikke-reaktionsproces på en intuitiv måde. Du kan simpelthen vælge den døde proces fra proceslisten og dræbe den ved at højreklikke på processen og vælge drabsmuligheden.

Der er mange flere alternativer til denne applikation, og vi er sikre på, at du nemt kan finde en til dit distributions- eller skrivebordsmiljø.

Afslutter tanker


Da processtyring i Linux er meget alsidig, bliver brugerne ofte frustrerede, når de beskæftiger sig med ikke-responsive processer. Derfor har vores redaktører skitseret alle mulige måder at afslutte en død Linux-proces i denne vejledning. Efter at have læst dette, skal du være i stand til at dræbe processer, der ikke reagerer, enten fra kommandolinjen eller fra GUI. Du kan også bruge en af ​​vores one-liner-kommandoer til at håndtere sådanne gener på kortest mulig tid. Desuden kan du endda dræbe mere end en enkelt proces ved at bruge vores enkle shell-script. Så forhåbentlig har du fået de oplysninger, du var ude efter, fra vores guide.

Top 10 spil at spille på Ubuntu
Windows-platform har været en af ​​de dominerende platforme til spil på grund af den enorme procentdel af spil, der udvikler sig i dag til indbygget a...
5 bedste arkadespil til Linux
I dag er computere seriøse maskiner, der bruges til spil. Hvis du ikke kan få den nye høje score, ved du hvad jeg mener. I dette indlæg vil du kende n...
Kamp om Wesnoth 1.13.6 Udvikling frigivet
Kamp om Wesnoth 1.13.6 udgivet i sidste måned, er den sjette udviklingsudgivelse i 1.13.x-serien, og den leverer en række forbedringer, især til bruge...