Kuidas Linuxis protsessi nime järgi tappa

Sunnige nende Linuxi käskude abil valesti käituvad protsessid lõpetama

Mõiste „Protsess” tähenduse selgitamiseks kõige lihtsamate sõnadega on see, et see on teie süsteemi mis tahes rakenduse või programmi töötav eksemplar. Võimalik, et töötate korraga mitut rakendust, näiteks sirvite, kuulate oma terminalis töötavat muusikat jne. Nende rakendustega on seotud palju taustaprotsesse, mida kasutaja juhib.

Iga teie süsteemis töötav rakendus või programm loob teie ühe rakendusega seotud mitu protsessi. Mõnikord võib see olla probleem ja nendest protsessidest vabanemine on teie ainus võimalus.

Protsessi "tapmine" on üks kasulik võimalus, mida Linux pakub käimasolevate protsesside peatamiseks, olgu selleks siis esiplaani või taustaprotsess. Selles artiklis vaatame läbi sellised käsud nagu tappa, pkill ja Tapa kõik et sundida süsteemi mis tahes protsessist väljuma.

Miks tappa protsess?

Enne selles õpetuses jätkamist on oluline mõista protsessi tapmise kontseptsiooni. Tapmine võib tunduda väga jõhker viis selle kontseptsiooni väljendamiseks, kuid piltlikult tähendab see protsessi jõuga katkestamist.

Miks katkestada või lõpetada käimasolev protsess? Kui taustal töötab mitu protsessi, võivad kõik või vähesed neist tõrkeid ja võivad põhjustada teie süsteemi tõrkeid. See lükkab teie käimasolevaid ülesandeid edasi, kuna talitlushäire võib teie süsteemi mõneks ajaks külmutada.

Mõnikord näib kõigi valesti käituvate protsesside lõpetamine olevat ainus võimalus süsteemi normaalseks toimimiseks. Linux võimaldab teil protsessi tappa, kasutades pid või protsessi nimi.

Kasutades pgrep käsk

Enamik Linuxi kasutajaid tunneb seda grep käsk. The pgrep käsku saab kasutada samadel ridadel grep.

pgrep käsk, kui seda kasutatakse, kuvab pid Käskluses määratud tööprotsessist. See käsk on rakenduse kasutamisel väga kasulik pkill käsk.

Üldine süntaks:

pgrep [valikud] [muster]

Koos saadaolevad olulised valikud pgrep käsk

VõimalusKirjeldus
-uloendi protsessi ID, mis kuulub konkreetsele kasutajale
-cloendada sobitusprotsesside arv
- Minaloetleda ainult protsesside nimed
-aloetlege protsessi nime täielik tee

Näitame selle kasutamist pgrep käsk näite abil.

pgrep -u gaurav gnome

Siin soovime näha pids protsessi gnome'ist, mis kuulub kasutajale „gaurav”. Võimalus -u võimaldab teil loetleda pids konkreetsele kasutajale kuuluvatest protsessidest. Sel juhul kasutaja gaurav.

Väljund:

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

Selle õpetusega edasi liikudes pgrep käsk aitab meil kinnitada, kas protsess on surnud või töötab endiselt.

Liigume nüüd selle juurde pkill käsk ja selle täitmine.

Kasutades pkill käsk

Saate kasutada pkill käsk Linuxis protsessi hävitamiseks protsessi nime kasutades. Isegi kui te ei tea pid mõne protsessi, isegi siis saate selle konkreetse protsessi tappa, kasutades pkill käsk.

Protsessid saab määrata nende täieliku või osalise nimega, kasutades pkill käsk. Isegi kui sisestate protsessi osalise nime, pkill käsk sobitab kõik töötavad protsessid vastava nimega, mille olete käsku sisestanud.

Süntaks:

pkill [valikud][protsessi_nime_muster] 

Näide:

Kuvame protsessid, mis praegu töötavad, kasutades üleval käsk. Võite kasutada ka ps käsk protsesside loetlemiseks.

üleval
üleval - 14:24:02 üles 3:12, 1 kasutaja, koormuse keskmine: 0,29, 0,48, 0,58 Ülesandeid: kokku 221, 1 jooksev, 172 magama, 0 peatatud, 1 zombie % protsessori(te): 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 : kokku 3928240, 610456 tasuta, 2233152 kasutatud, 1084632 puhv/vahemälu KiB Vahetus: 3 7,40 kokku 3 8, 48, 48 1187268 tulemusteta Mem PID KASUTAJA PR NI Virt RES SHR S% CPU% MEM AJAL + KÄSKLUS 4077 gaurav 20 0 3312128 673480 118360 S 19,6 17,1 15: 13,23 Veebisisufunktsioonid 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 juurviljade 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 Veebisisufunktsioonid 4146 gaurav 20 0 3017924 245304 120604 S 0,7 6,2 2: 01,21 Veebisisufunktsioonid 4417 gaurav 20 0 2964208 234396 119160 S 0,7 6,0 0 :59.90 Veebisisu 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0:48,20 Veebisisu 16007 gaurav 20 0 41944 3780 3116 R .08: top. 

Kasutades üleval käsk kuvab teie terminalis mitu protsessi. Proovime protsessi kuvada kindla nimega. Me kasutame grep käsk protsessi kuvamiseks, mille nimi ühtib stringiga "mongo".

ülemine | grep -i mongo

Märge: Siin olen kasutanud valikut -i, et muuta otsing tõstutundlikuks.

Selle käsu väljund kuvab protsessid, mis vastavad nimele "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 raames 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

Nüüd kasutame pkill käsk protsessi "mongo" tapmiseks.

pkill mongo

See käsk tapab nüüd protsessi mongo. Saame kinnitada, kas protsess on sunnitud lõpetama, kasutades pgrep käsk, mis kuvab pid jooksvast protsessist vastavalt kasutaja määratud kriteeriumidele.

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

See käsk ei tagasta väärtust. See kinnitab, et protsess "mongo" tapetakse nüüd kasutades pkill käsk.

Sageli kasutatavad valikud pkill käsk

Kasutades pkill käsku vajame mainitud valikuid, et seda õigesti ja vaevata kasutada pkill käsk.

ValikudKirjeldus
-fsobitada täisargumentidega, sealhulgas tühikud, jutumärgid, erimärgid
-upkill protsessi teavitamiseks, et see sobiks määratud kasutaja käivitatava protsessiga
-1laadib protsessi uuesti
-9tapab protsessi
-15katkestab graatsiliselt protsessi

Vaatame veel ühte näidet pkill käsk kasutades -f valik.

Terminalis töötab praegu kaks käsku, nagu allpool näidatud.

ping bbc.com ping youtube.com

Mõlemad protsessid on algatatud ping käsk. Oletame nüüd, et soovime lõpetada ainult ühe protsessi "ping youtube.com", siis peame kasutama -f valik koos pkill käsk, mis tapab konkreetse nimega protsessi, sealhulgas protsessi nimes olevad tühikud ja jutumärgid.

Käsk:

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

Tulemus:

gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56 (84) baiti andmeid. 64 baiti saidist bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30,9 ms 64 baiti failist bom12s08-in-f14.1e100.2506:762.2006. = 117 aeg = 121 ms 64 baiti bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq = 206 ttl = 117 aeg = 86,5 ms 64 baiti bom12s08-in-f14.1.6.20148.1.6.672 ): icmp_seq=207 ttl=117 aeg=105 ms Lõpetatud gaurav@ubuntu:~$ 

Siin on "ping youtube.com"protsess on nüüd surnud ja "ping bbc.com” töötab terminalis endiselt.

Juhul, kui oleksime kasutanud pkill ping käsk, oleks see tapnud mõlemad ping protsessid, mis on ebasoovitav.

Koos kasutatud signaalid pkill käsk

pkill sunnib protsessi lõpetama, saates sellele protsessile konkreetse signaali. On kolm võimalikku signaali, mis pkill käsk võib protsessile saata sõltuvalt kasutaja antud käsust.

Allpool on saadaolevate signaalide loend.

SignaalSpetsifikatsioon
1(HUP)laadib määratud protsessi uuesti
9 (TAPA)tapab määratud protsessi
15 (TERM)peatab või katkestab õrnalt määratud protsessi

Selle õpetuse puhul toetume suuresti sellele TAPA signaal. Vaatame selle paremaks mõistmiseks läbi mõned näited.

Kasutades pgrep käsk hankida pid sobitamine nimega apache.

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

VÕI võid kasutada käsku ka numbritega (nt 1, 9, 15)

pkill -9 apache

Mõlemad ülaltoodud käsud tapavad protsessi apache. Kinnitades rakendusega pgrep käsu uuesti.

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

Nagu pgrep käsk ei tagasta väljundit, tõestab, et protsessi apache on tapetud.

Järeldus

Selles õpetuses õppisime pkill käsk ja kuidas seda kasutatakse protsessi tapmiseks, kasutades protsessi nime otse. Samuti saime teada pgrep käsk, mida kasutatakse mis tahes konkreetse kasutaja käivitatava protsessi protsessi ID toomiseks. The pgrep käsk võimaldab meil ristkontrollida, kas protsess on surnud.