Forceer het stoppen van misdragende processen met behulp van deze Linux-commando's
Om de betekenis van een 'proces' in de eenvoudigste woorden uit te leggen, is dat het een actief exemplaar is van een toepassing of programma op uw systeem. U kunt meerdere toepassingen tegelijk gebruiken, zoals browsen, naar muziek luisteren op uw terminal, enz. Er zijn veel achtergrondprocessen die aan deze toepassingen zijn gekoppeld en die door de gebruiker worden uitgevoerd.
Elke toepassing of een programma dat op uw systeem draait, creëert meerdere processen die aan uw enkele toepassing zijn gekoppeld. Soms kan dit een probleem zijn en is het verwijderen van deze processen de enige optie die je hebt.
Het 'doden' van een proces is een handige optie die Linux je biedt om de lopende processen te stoppen, of het nu een voorgrondproces of een achtergrondproces is. In dit artikel zullen we de commando's bekijken zoals: doden
, pkill
en killall
om een proces op een systeem geforceerd af te sluiten.
Waarom een proces doden?
Het is belangrijk om het concept van het doden van een proces te begrijpen voordat u verder gaat in deze zelfstudie. Doden lijkt misschien een erg brutale manier om het concept uit te drukken, maar wat het figuurlijk betekent, is het met geweld afbreken van een proces.
Waarom nu een lopend proces afbreken of stoppen? Wanneer meerdere processen op de achtergrond worden uitgevoerd, kunnen alle of enkele ervan niet goed werken en kan uw systeem zich misdragen. Dit vertraagt uw lopende taken, omdat het storingsproces uw systeem een tijdje kan bevriezen.
Soms lijkt het stoppen van alle misdragende processen de enige optie om de normaliteit op uw systeem te herstellen. Met Linux kun je een proces beëindigen met behulp van de pid
of de procesnaam.
De ... gebruiken pgrep
opdracht
De meeste Linux-gebruikers zijn bekend met de grep
opdracht. De pgrep
commando kan worden gebruikt op soortgelijke regels van de grep
.
pgrep
commando wanneer gebruikt, toont de pid
van het lopende proces zoals gespecificeerd in de opdracht. Deze opdracht zal zeer nuttig zijn tijdens het gebruik van de pkill
opdracht.
Algemene syntaxis:
pgrep [opties] [patroon]
Belangrijke opties beschikbaar met de pgrep
opdracht
Optie | Beschrijving |
-u | lijst proces-ID eigendom van een specifieke gebruiker |
-C | aantal overeenkomende processen tellen |
-I | lijst alleen procesnamen |
-een | lijst volledig pad van de procesnaam |
Laten we het gebruik demonstreren van pgrep
commando aan de hand van een voorbeeld.
pgrep -u gaurav gnome
Hier willen we de pids
van de proceskabouter die eigendom is van de gebruiker 'gaurav'. Optie -u
stelt u in staat om de pids
van de processen die eigendom zijn van een specifieke gebruiker. In dit geval, gebruiker gaurav.
Uitgang:
gaurav@ubuntu:~$ pgrep -u gaurav kabouter 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$
Terwijl we verder gaan met deze zelfstudie, pgrep
commando zal ons helpen bij het bevestigen of het proces is gestopt of nog steeds actief is.
Laten we nu naar de gaan pkill
commando en de uitvoering ervan.
Gebruik makend van pkill
opdracht
U kunt de pkill
commando in Linux om het proces te beëindigen met behulp van de procesnaam. Ook als je de niet kent pid
van een proces, zelfs dan kun je dat specifieke proces doden met behulp van de pkill
opdracht.
De processen kunnen worden gespecificeerd met hun volledige naam of de gedeeltelijke naam tijdens het gebruik van de pkill
opdracht. Zelfs als u de gedeeltelijke naam van het proces invoert, pkill
opdracht zal alle lopende processen matchen met de overeenkomende naam die u in de opdracht hebt ingevoerd.
Syntaxis:
pkill [opties][procesnaam_patroon]
Voorbeeld:
Laten we de processen weergeven die momenteel worden uitgevoerd met behulp van de bovenkant
opdracht. U kunt ook de ps
commando om de processen weer te geven.
bovenkant
top - 14:24:02 omhoog 3:12, 1 gebruiker, gemiddelde belasting: 0,29, 0,48, 0,58 Taken: 221 totaal, 1 actief, 172 slapend, 0 gestopt, 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 totaal, 610456 vrij, 2233152 gebruikt, 1084632 buff/cache KiB Swap: 4083708 totaal, 3378884 vrij, 704824 gebruikt. 1187268 beschikbaar Mem PID GEBRUIKER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4077 gaurav 20 0 3312128 673480 118360 S 19.6 17,1 15:13.23 Webinhoud 3712 gaurav 20 0 3953008 453544 116476 S 4,0 11,5 9:28.39 MainThread 2010 gaurav 20 0 4084232 111096 45024 S 1,7 2,8 3:14,85 gnome-shell 1197 root 20 0 1039612 33704 22988 S 1,0 0,9 3:04,42 Xorg 1426 couchdb 20 0 3772396 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 Webinhoud 4146 gaurav 20 0 3017924 245304 120604 S 0,7 6,2 2:01,21 Webinhoud 4417 gaurav 20 0 2964208 234396 119160 S 0,7 6,0 0 :59.90 Webinhoud 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0:48.20 Webinhoud 16007 gaurav 20 0 41944 3780 3116 R 0,7 0,1 0:00.28 naar boven
Gebruik makend van bovenkant
commando zal meerdere processen op uw terminal weergeven. Laten we proberen het proces weer te geven met een bepaalde naam. We zullen de gebruiken grep
commando om een proces weer te geven waarvan de naam overeenkomt met de tekenreeks 'mongo'.
naar boven | grep -i mongo
Opmerking: Hier heb ik de optie -i gebruikt om de zoekopdracht hoofdletterongevoelig te maken.
De uitvoer van deze opdracht geeft de processen weer die overeenkomen met de naam '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 gebruiken we de pkill
commando om het proces genaamd 'mongo' te doden.
pkill mongo
Deze opdracht zal nu het proces mongo doden. We kunnen bevestigen of het proces is gedwongen te stoppen met behulp van de pgrep
commando dat de . weergeeft pid
van het lopende proces volgens de door de gebruiker gespecificeerde criteria.
gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$
Deze opdracht retourneert geen waarde. Dit bevestigt dat het proces 'mongo' nu wordt gedood met behulp van de pkill
opdracht.
Opties die vaak worden gebruikt met pkill
opdracht
Tijdens het gebruik van de pkill
commando zullen we de genoemde opties nodig hebben voor een correct en moeiteloos gebruik van de pkill
opdracht.
Opties | Beschrijving |
-F | match met volledige argumenten, inclusief spaties, aanhalingstekens, speciale tekens |
-u | om het pkill-proces te informeren zodat het overeenkomt met het proces dat door de opgegeven gebruiker wordt uitgevoerd |
-1 | herlaadt het proces |
-9 | doodt het proces |
-15 | beëindigt gracieus een proces |
Laten we nog een voorbeeld zien van pkill
commando met behulp van de -F
optie.
Er worden momenteel twee opdrachten uitgevoerd op de terminal, zoals hieronder wordt weergegeven.
ping bbc.com ping youtube.com
Beide processen worden geïnitieerd door de ping
opdracht. Stel nu dat we slechts één proces "ping youtube.com" willen beëindigen, dan moeten we de . gebruiken -F
optie met de pkill
commando dat een proces met een specifieke naam doodt, inclusief de spaties en aanhalingstekens uit de procesnaam.
Opdracht:
gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$
Resultaat:
gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) bytes aan gegevens. 64 bytes van bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 tijd=30,9 ms 64 bytes van bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=2 ttl =117 tijd=121 ms 64 bytes van bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 tijd=86.5 ms 64 bytes van bom12s08-in-f14.1e100.net (142.250.67.206 ): icmp_seq=207 ttl=117 tijd=105 ms Beëindigd gaurav@ubuntu:~$
Hier de "ping youtube.com
” proces wordt nu afgebroken en de “ping bbc.com
” draait nog steeds op de terminal.
Voor het geval, als we de hadden gebruikt pkill ping
commando, het zou zowel de ping
processen, wat niet wenselijk is.
Signalen gebruikt met pkill
opdracht
pkill
dwingt een proces om te stoppen door een specifiek signaal naar dat proces te sturen. Er zijn drie mogelijke signalen die: pkill
commando naar het proces kan sturen, afhankelijk van het commando dat de gebruiker geeft.
Hieronder volgt de lijst van de beschikbare signalen.
Signaal | Specificatie |
1 (HUP ) | laadt het gespecificeerde proces opnieuw |
9 (DODEN ) | doodt het gespecificeerde proces |
15 (TERMIJN ) | stopt of breekt het gespecificeerde proces voorzichtig af |
Voor deze tutorial zullen we sterk vertrouwen op de DODEN
signaal. Laten we enkele voorbeelden doornemen om het beter te begrijpen.
De ... gebruiken pgrep
commando om de . te krijgen pid
overeenkomend met de naam apache.
gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -Kill apache
OF je kunt het commando ook met cijfers gebruiken (bijv. 1, 9, 15)
pkill -9 apache
Beide bovenstaande commando's zullen het proces apache doden. Bevestigen met de pgrep
commando opnieuw.
gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$
als de pgrep
commando retourneert geen uitvoer, bewijst dat het proces apache is gedood.
Gevolgtrekking
In deze tutorial leerden we over de pkill
commando en hoe het wordt gebruikt om het proces direct te beëindigen door de procesnaam te gebruiken. We leerden ook over de pgrep
commando dat wordt gebruikt om de proces-ID op te halen van het proces dat door een specifieke gebruiker wordt uitgevoerd. De pgrep
commando stelt ons in staat om te controleren of het proces is gedood.