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õimalus | Kirjeldus |
-u | loendi protsessi ID, mis kuulub konkreetsele kasutajale |
-c | loendada sobitusprotsesside arv |
- Mina | loetleda ainult protsesside nimed |
-a | loetlege 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.
Valikud | Kirjeldus |
-f | sobitada täisargumentidega, sealhulgas tühikud, jutumärgid, erimärgid |
-u | pkill protsessi teavitamiseks, et see sobiks määratud kasutaja käivitatava protsessiga |
-1 | laadib protsessi uuesti |
-9 | tapab protsessi |
-15 | katkestab 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.
Signaal | Spetsifikatsioon |
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.