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žnost | Opis |
-u | seznam ID procesa v lasti določenega uporabnika |
-c | prešteti število ujemajočih se procesov |
-JAZ | navedite samo imena procesov |
-a | seznam 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.
Opcije | Opis |
-f | ujemanje s celotnimi argumenti, vključno s presledki, narekovaji, posebnimi znaki |
-u | za obveščanje procesa pkill, da se ujema s procesom, ki ga izvaja določen uporabnik |
-1 | ponovno naloži postopek |
-9 | ubije proces |
-15 | graciozno 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.
Signal | Specifikacija |
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.