Hoe proces op naam te doden in Linux

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

OptieBeschrijving
-ulijst proces-ID eigendom van een specifieke gebruiker
-Caantal overeenkomende processen tellen
-Ilijst alleen procesnamen
-eenlijst 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.

OptiesBeschrijving
-Fmatch met volledige argumenten, inclusief spaties, aanhalingstekens, speciale tekens
-uom het pkill-proces te informeren zodat het overeenkomt met het proces dat door de opgegeven gebruiker wordt uitgevoerd
-1herlaadt het proces
-9doodt het proces
-15beë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.

SignaalSpecificatie
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.