Kako ubiti proces po imenu v Linuxu

S temi ukazi Linuxa prisilno prenehajte z napačnimi procesi

Pomen 'procesa' razložiti z najpreprostejšimi besedami je, da je to delujoči primer katere koli aplikacije ali programa v vašem sistemu. Morda izvajate več aplikacij hkrati, na primer brskanje, poslušanje glasbe, ki deluje na vašem terminalu, itd. S temi aplikacijami je povezanih veliko procesov v ozadju, ki jih izvaja uporabnik.

Vsaka aplikacija ali program, ki se izvaja v vašem sistemu, ustvari več procesov, povezanih z vašo posamezno aplikacijo. Včasih je to lahko težava in edina možnost je, da se znebite teh procesov.

"Uničenje" procesa je ena od uporabnih možnosti, ki vam jih Linux ponuja za zaustavitev tekočih procesov, pa naj bo to proces v ospredju ali v ozadju. V tem članku bomo pregledali ukaze, kot so ubiti, pkill in ubij prisilno zapreti kateri koli proces v sistemu.

Zakaj ubiti proces?

Razumevanje koncepta ubijanja procesa je pomembno, preden nadaljujete s to vadnico. Ubijanje se morda zdi zelo brutalen način izražanja koncepta, toda figurativno pomeni nasilno prekinitev procesa.

Zdaj, zakaj prekiniti ali končati proces, ki je v teku? Ko se v ozadju izvaja več procesov, lahko vsi ali le nekaj od njih ne delujejo in povzročijo, da se vaš sistem ne obnaša. To zamuja vaše tekoče naloge, saj lahko proces okvare za nekaj časa zamrzne vaš sistem.

Včasih se zdi, da je opustitev vseh procesov, ki se slabo obnašajo, edina možnost za vzpostavitev normalnega delovanja sistema. Linux vam omogoča uničenje procesa z uporabo pid ali ime procesa.

Uporabljati pgrep ukaz

Večina uporabnikov Linuxa pozna grep ukaz. The pgrep ukaz se lahko uporablja v podobnih vrsticah grep.

pgrep ukaz, ko se uporablja, prikaže pid tekočega procesa, kot je določeno v ukazu. Ta ukaz se bo izkazal za zelo koristen pri uporabi pkill ukaz.

Splošna sintaksa:

pgrep [možnosti] [vzorec]

Pomembne možnosti, ki so na voljo z pgrep ukaz

MožnostOpis
-useznam ID procesa v lasti določenega uporabnika
-cprešteti število ujemajočih se procesov
-JAZnavedite samo imena procesov
-aseznam celotne poti imena procesa

Pokažimo uporabo pgrep ukaz z uporabo primera.

pgrep -u gaurav gnome

Tukaj želimo videti pids procesnega gnoma, ki je v lasti uporabnika 'gaurav'. Možnost -u vam omogoča, da navedete pids procesov v lasti določenega uporabnika. V tem primeru uporabnik gaurav.

Izhod:

gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$

Ko nadaljujemo s to vadnico, pgrep ukaz nam bo pomagal pri potrditvi, ali je bil proces uničen ali še vedno teče.

Preidimo zdaj na pkill ukaz in njegovo izvajanje.

Uporaba pkill ukaz

Lahko uporabite pkill ukaz v Linuxu za uničenje procesa z imenom procesa. Tudi če ne poznate pid nekega procesa, tudi takrat lahko ta proces ubijete z uporabo pkill ukaz.

Procese lahko podate s popolnim ali delnim imenom med uporabo pkill ukaz. Tudi če vnesete delno ime procesa, pkill ukaz bo povezal vse zagnane procese z ustreznim imenom, ki ste ga vnesli v ukaz.

Sintaksa:

pkill [možnosti][vzorec_ime_procesa] 

Primer:

Pokažimo procese, ki se trenutno izvajajo z uporabo vrh ukaz. Uporabite lahko tudi ps ukaz za seznam procesov.

vrh
vrh - 14:24:02 navzgor 3:12, 1 uporabnik, povprečje obremenitve: 0,29, 0,48, 0,58 Naloge: skupaj 221, 1 tek, 172 spanje, 0 ustavljen, 1 zombi %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 skupaj, 610456 brezplačno, 2233152 rabljeno, 1084632 buff/cache KiB Swap: 728 340 skupno, rabljeno: 048 1187268 izkoristijo Mem PID UPORABNIK PR NI Virt RES SHR S% CPU% MEM TIME + UKAZ 4077 Gaurav 20 0 3.312.128 673.480 118.360 S 19.6 17.1 15: 13.23 Web Content 3712 Gaurav 20 0 3.953.008 453.544 116.476 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-shell 1197 koren 20 0 1.039.612 33.704 22.988 S 1,0 0,9 3: 04,42 Xorg 1426 couchdb 20 0 3.772.396 16.908 2520 S 0,7 0,4 1: 50,83 beam.smp 3288 Gaurav 20 0 722.480 25.048 18272 S 0,7 0,6 0: 06,84 gnome-priključnih 3915 Gaurav 20 0 2.804.900 231.524 111.228 S 0,7 5,9 0: 54.42 Web Content 4146 Gaurav 20 0 3.017.924 245.304 120.604 S 0,7 6,2 2: 01.21 Web Content 4417 Gaurav 20 0 2.964.208 234.396 119.160 S 0,7 6,0 0 :59,90 Spletna vsebina 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0:48,20 Spletna vsebina 16007 gaurav 20 0 41944 3780 3170 R 1.20. 

Uporaba vrh ukaz bo prikazal več procesov na vašem terminalu. Poskusimo prikazati postopek z določenim imenom. Uporabili bomo grep ukaz za prikaz procesa, katerega ime se ujema z nizom 'mongo'.

vrh | grep -i mongo

Opomba: Tukaj sem uporabil možnost -i, da je iskanje neobčutljivo na velike in male črke.

Izhod tega ukaza bo prikazal procese, ki se ujemajo z imenom 'mongo'

 1158 mongodb 20 0 288.564 4848 1320 S 0,7 0,1 1: 03.22 mongod 1158 mongodb 20 0 288.564 4848 1320 S 1,0 0,1 1: 03,25 mongod 1158 mongodb 20 0 288.564 4848 1320 S 0,7 0,1 1: 03,27 mongod 1158 mongodb 20 0 288.564 4848 1320 S 0,7 0,1 1: 03,29 mongod 1158 mongodb 20 0 288.564 4848 1320 S 0,7 0,1 1: 03,31 mongod 1158 mongodb 20 0 288.564 4848 1320 S 0,7 0,1 1: 03,33 mongod 1158 mongodb 20 0 288.564 4848 1320 S 1,0 0,1 1: 03,36 mongod 1158 mongodb 20 0 288.564 4848 1320 S 0,7 0,1 1: 03,38 mongod 1158 mongodb 20 0 288.564 4848 1320 S 0,7 0,1 1: 03.40 mongod 1158 mongodb 20 0 288.564 4848 1320 S 1,0 0,1 1: 03,43 mongod 1158 mongodb 20 0 288.564 4848 1320 S 0,7 0,1 1: 03.45 mongod 1158 mongodb 20 0 288.564 4848 1320 S 1,0 0,1 1: 03,48 mongod 1158 mongodb 20 0 288.564 4848 1320 S 0,3 0,1 1: 03,49 mongod 1158 mongodb 20 0 288.564 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

Zdaj bomo uporabili pkill ukaz za uničenje procesa, imenovanega 'mongo'.

pkill mongo

Ta ukaz bo zdaj ubil proces mongo. Lahko potrdimo, ali je bil postopek prisiljen končati z uporabo pgrep ukaz, ki prikaže pid tekočega procesa po merilih, ki jih določi uporabnik.

gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$

Ta ukaz ne bo vrnil nobene vrednosti. To potrjuje, da je proces 'mongo' zdaj uničen z uporabo pkill ukaz.

Možnosti, ki se pogosto uporabljajo z pkill ukaz

Med uporabo pkill ukaz bomo potrebovali omenjene možnosti za pravilno in enostavno uporabo pkill ukaz.

OpcijeOpis
-fujemanje s celotnimi argumenti, vključno s presledki, narekovaji, posebnimi znaki
-uza obveščanje procesa pkill, da se ujema s procesom, ki ga izvaja določen uporabnik
-1ponovno naloži postopek
-9ubije proces
-15graciozno prekine proces

Poglejmo si še en primer pkill ukaz z uporabo -f možnost.

Na terminalu se trenutno izvajata dva ukaza, kot je prikazano spodaj.

ping bbc.com ping youtube.com

Oba procesa sproži ping ukaz. Zdaj, recimo, da želimo končati samo en proces "ping youtube.com", potem moramo uporabiti -f možnost z pkill ukaz, ki ubije proces z določenim imenom, vključno s presledki in narekovaji iz imena procesa.

Ukaz:

gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$ 

rezultat:

gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56 (84) bajtov podatkov. 64 bajtov iz bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30,9 ms 64 bajtov od bom12s08-in-f14.1e100.net (1467.mpse 0): 1467.mpse =117 čas=121 ms 64 bajtov iz bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 čas=86,5 ms 64 bajtov iz bom12s08-in-f16.net (142.250.67.206). ): icmp_seq=207 ttl=117 čas=105 ms Prekinjeno gaurav@ubuntu:~$ 

Tukaj je "ping youtube.com" proces je zdaj ustavljen in "ping bbc.com« še vedno teče na terminalu.

V primeru, da bi uporabili pkill ping ukaz, bi ubil oba ping procesov, kar je nezaželeno.

Signali, ki se uporabljajo z pkill ukaz

pkill prisili proces, da konča s pošiljanjem določenega signala temu procesu. Obstajajo trije možni signali, ki pkill ukaz lahko pošlje procesu, odvisno od ukaza, ki ga da uporabnik.

Spodaj je seznam razpoložljivih signalov.

SignalSpecifikacija
1(HUP)znova naloži določen proces
9 (UBIJ)ubije določen proces
15 (TERM)nežno ustavi ali prekine določen postopek

Pri tej vadnici se bomo močno zanašali na UBIJ signal. Oglejmo si nekaj primerov, da ga bolje razumemo.

Uporabljati pgrep ukaz za pridobitev pid ujemanje z imenom apache.

gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -KIll apache

ALI lahko uporabite tudi ukaz s številkami (npr. 1, 9, 15)

pkill -9 apache

Oba ukaza, prikazana zgoraj, bosta uničila proces apache. Potrditev z pgrep znova ukaz.

gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$

Kot pgrep ukaz ne vrne nobenega rezultata, dokaže, da je bil proces apache ubit.

Zaključek

V tej vadnici smo spoznali pkill ukaz in kako se uporablja za uničenje procesa z neposrednim imenom procesa. Izvedeli smo tudi o pgrep ukaz, ki se uporablja za pridobitev ID-ja procesa procesa, ki ga izvaja kateri koli določen uporabnik. The pgrep ukaz nam omogoča navzkrižno preverjanje, ali je proces uničen.