Tvångsavsluta processer som inte beter sig med dessa Linux-kommandon
För att förklara innebörden av en "process" i de enklaste orden är att det är en körande instans av alla program eller program på ditt system. Du kanske kör flera applikationer samtidigt som att surfa, lyssna på musik som arbetar på din terminal, etc. Det finns många bakgrundsprocesser som är associerade med dessa applikationer som körs av användaren.
Varje applikation eller ett program som körs på ditt system skapar flera processer associerade med din enda applikation. Ibland kan detta vara ett problem och att bli av med dessa processer är det enda alternativet du har.
Att "döda" en process är ett användbart alternativ Linux ger dig för att stoppa de pågående processerna, vare sig det är en förgrundsprocess eller en bakgrundsprocess. I den här artikeln kommer vi att granska kommandona som döda
, pkill
och döda alla
att tvinga avbryta någon process på ett system.
Varför döda en process?
Att förstå konceptet med att döda en process är viktigt innan du går vidare i denna handledning. Att döda kan tyckas vara ett väldigt brutalt sätt att uttrycka konceptet, men vad det bildligt betyder är att med våld avbryta en process.
Varför nu avbryta eller avsluta en pågående process? När flera processer körs i bakgrunden kan alla eller få av dem fungera felaktigt och kan orsaka att ditt system inte beter sig. Detta fördröjer dina pågående uppgifter eftersom den felaktiga processen kan frysa ditt system ett tag.
Ibland tycks att avsluta alla processer som inte fungerar som det enda alternativet för att återställa normaliteten på ditt system. Linux låter dig döda en process med hjälp av pid
eller processnamnet.
Använda pgrep
kommando
De flesta av Linux-användarna är bekanta med grep
kommando. De pgrep
kommandot kan användas på liknande rader i grep
.
pgrep
kommandot när det används, visar pid
av den pågående processen enligt kommandot. Detta kommando kommer att visa sig vara mycket användbart när du använder pkill
kommando.
Allmän syntax:
pgrep [alternativ] [mönster]
Viktiga alternativ tillgängliga med pgrep
kommando
Alternativ | Beskrivning |
-u | listprocess-id som ägs av en specifik användare |
-c | räkna antalet matchningsprocesser |
-Jag | lista endast processnamn |
-a | lista hela sökvägen till processnamnet |
Låt oss demonstrera användningen av pgrep
kommandot med hjälp av ett exempel.
pgrep -u gaurav gnome
Här vill vi se pids
av processgnomen som ägs av användaren 'gaurav'. Alternativ -u
låter dig lista pids
av processerna som ägs av en specifik användare. I det här fallet, användaren gaurav.
Produktion:
gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$
När vi går vidare med denna handledning, pgrep
kommandot hjälper oss att bekräfta om processen har dödats eller fortfarande körs.
Låt oss nu gå till pkill
kommando och dess utförande.
Använder sig av pkill
kommando
Du kan använda pkill
kommando i Linux för att döda processen med hjälp av processnamnet. Även om du inte känner till pid
av någon process, även då kan du döda just den processen med hjälp av pkill
kommando.
Processerna kan specificeras med deras fullständiga namn eller delnamnet när du använder pkill
kommando. Även om du anger det partiella namnet på processen, pkill
kommandot kommer att matcha alla pågående processer med det matchande namnet som du har angett i kommandot.
Syntax:
pkill [alternativ][process_name_pattern]
Exempel:
Låt oss visa de processer som för närvarande körs med hjälp av topp
kommando. Du kan också använda ps
kommando för att lista processerna.
topp
topp - 14:24:02 upp 3:12, 1 användare, belastningsmedelvärde: 0,29, 0,48, 0,58 Uppgifter: 221 totalt, 1 löpning, 172 sovande, 0 stoppade, 1 zombie %Cpu(s): 5,6 us, 1,0 sy , 0,0 ni, 92,9 id, 0,4 wa, 0,0 hi, 0,1 si, 0,0 st KiB Mem : 3928240 totalt, 610456 gratis, 2233152 begagnat, 1084632 buff/cache KiB 702 3 totalt 8,48 begagnade 8,48 3 708 408 totalt. 1187268 utnyttja Mem PID USER PR NI VIRT RES SHR S% CPU% MEM TID + KOMMANDO 4077 gaurav 20 0 3312128 673480 118360 S 19,6 17,1 15: 13,23 Web Content 3712 gaurav 20 0 3953008 453544 116476 S 4,0 11,5 9: 28,39 MainThread 2010 gaurav 20 0 4084232 111096 45.024 S 1,7 2,8 3: 14,85 gnome-skal 1197 rot 20 0 1.039.612 33704 22988 S 1,0 0,9 3: 04,42 Xorg 1426 couchdb 20 0 3.772.396 16908 2520 S 0,7 0,4 1: 50,83 beam.smp 3288 gaurav 20 0 722480 25048 18272 S 0,7 0,6 0: 06,84 gnome-terminal- 3915 gaurav 20 0 2804900 231524 111228 S 0,7 5,9 0: 54,42 Web Content 4146 gaurav 20 0 3017924 245304 120604 S 0,7 6,2 2: 01.21 Web Content 4417 gaurav 20 0 2964208 234396 119160 S 0,7 6,0 0 :59,90 Webbinnehåll 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0:48,20 Webbinnehåll 16007 gaurav 20 0 41944 3780 3116 0,08 R 1.08.
Använder sig av topp
kommandot kommer att visa flera processer på din terminal. Låt oss försöka visa processen med ett visst namn. Vi kommer att använda grep
kommando för att visa en process vars namn matchar strängen "mongo".
topp | grep -i mongo
Notera: Här har jag använt alternativet -i för att göra sökningen skiftlägesokänslig.
Utdata från detta kommando kommer att visa processerna som matchar namnet "mongo"
1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03.22 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1: 03.25 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03,27 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03,29 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03,31 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03,33 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1: 03,36 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03.38 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03.40 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1: 03,43 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03.45 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1: 03,48 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,3 0,1 1: 03,49 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1: 03,52 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1:03,54 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1:03,57 mongod
Nu kommer vi att använda pkill
kommando för att döda processen som heter 'mongo'.
pkill mongo
Detta kommando kommer nu att döda processen mongo. Vi kan bekräfta om processen har tvingats avslutas genom att använda pgrep
kommando som visar pid
av den pågående processen enligt de kriterier som anges av användaren.
gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$
Detta kommando returnerar inget värde. Detta bekräftar att processen "mongo" nu dödas med hjälp av pkill
kommando.
Alternativ som ofta används med pkill
kommando
När du använder pkill
kommando vi kommer att behöva de nämnda alternativen för korrekt och enkel användning av pkill
kommando.
alternativ | Beskrivning |
-f | matcha mot fullständiga argument inklusive mellanslag, citattecken, specialtecken |
-u | för att informera pkill-processen för att matcha processen som körs av den angivna användaren |
-1 | laddar om processen |
-9 | dödar processen |
-15 | graciöst avbryter en process |
Låt oss se ytterligare ett exempel på pkill
kommandot med hjälp av -f
alternativ.
Det finns två kommandon som för närvarande körs på terminalen som visas nedan.
ping bbc.com ping youtube.com
Båda processerna initieras av ping
kommando. Anta nu att vi bara vill avsluta en process "ping youtube.com", då måste vi använda -f
alternativet med pkill
kommando som dödar en process med ett specifikt namn inklusive mellanslag och citattecken från processnamnet.
Kommando:
gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$
Resultat:
gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) byte data. 64 byte från bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30,9 ms 64 byte från bom12s08-in-f14.1e100.25 = 0.27 .2se (1427) =117 tid=121 ms 64 byte från bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 tid=86,5 ms 64 byte från bom12s08-i-16.02.net (16.02.net ): icmp_seq=207 ttl=117 time=105 ms Avslutad gaurav@ubuntu:~$
Här, "pinga youtube.com
”-processen är nu dödad och ”ping bbc.com
” körs fortfarande på terminalen.
I fallet, om vi hade använt pkill ping
kommando, skulle det ha dödat båda ping
processer, vilket är oönskat.
Signaler som används med pkill
kommando
pkill
tvingar en process att avsluta genom att skicka en specifik signal till den processen. Det finns tre möjliga signaler som pkill
kommando kan skickas till processen beroende på kommandot som användaren ger.
Följande är listan över tillgängliga signaler.
Signal | Specifikation |
1 (HUP ) | laddar om den angivna processen |
9 (DÖDA ) | dödar den angivna processen |
15 (TERMIN ) | stoppar eller avbryter försiktigt den angivna processen |
För denna handledning kommer vi att förlita oss mycket på DÖDA
signal. Låt oss gå igenom några exempel för att förstå det bättre.
Använda pgrep
kommandot för att hämta pid
matchning mot namnet apache.
gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -DÖDA apache
ELLER du kan också använda kommandot med siffror (t.ex. 1, 9, 15)
pkill -9 apache
Båda kommandona som visas ovan kommer att döda processen apache. Bekräfta med pgrep
kommandot igen.
gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$
Som den pgrep
kommandot returnerar ingen utdata, bevisar att processen apache har dödats.
Slutsats
I den här handledningen lärde vi oss om pkill
kommandot och hur det används för att döda processen med hjälp av processnamnet direkt. Vi lärde oss också om pgrep
kommando som används för att hämta process-id för processen som körs av en specifik användare. De pgrep
kommandot låter oss krysskolla om processen är dödad.