Piespiedu kārtā pārtrauciet nepareizas darbības procesus, izmantojot šīs Linux komandas
Lai izskaidrotu “Procesa” nozīmi vienkāršākajos vārdos, ir tas, ka tas ir jebkuras jūsu sistēmā esošās lietojumprogrammas vai programmas darbības gadījums. Iespējams, jūs vienlaikus darbināt vairākas lietojumprogrammas, piemēram, pārlūkojat, klausāties terminālī strādājošu mūziku utt. Ar šīm lietojumprogrammām ir saistīti daudzi fona procesi, kurus darbina lietotājs.
Katra lietojumprogramma vai programma, kas darbojas jūsu sistēmā, rada vairākus procesus, kas saistīti ar jūsu vienu lietojumprogrammu. Dažreiz tā var būt problēma, un vienīgā iespēja ir atbrīvoties no šiem procesiem.
Procesa “nogalināšana” ir viena no noderīgām iespējām, ko Linux piedāvā, lai apturētu notiekošos procesus neatkarīgi no tā, vai tas ir priekšplāna process vai fona process. Šajā rakstā mēs pārskatīsim tādas komandas kā nogalināt
, pkill
un Nogalini visus
lai piespiestu aizvērt jebkuru procesu sistēmā.
Kāpēc nogalināt procesu?
Pirms turpināt šo apmācību, ir svarīgi saprast procesa nogalināšanas jēdzienu. Nogalināšana var šķist ļoti brutāls veids, kā izteikt šo jēdzienu, bet tas tēlaini nozīmē procesa piespiedu pārtraukšanu.
Tagad, kāpēc pārtraukt vai izbeigt notiekošo procesu? Ja fonā darbojas vairāki procesi, visi vai daži no tiem var nedarboties un var izraisīt sistēmas nepareizu darbību. Tas aizkavē notiekošos uzdevumus, jo nepareizas darbības process var uz laiku iesaldēt jūsu sistēmu.
Dažreiz šķiet, ka visu nepareizo darbību pārtraukšana ir vienīgā iespēja atjaunot sistēmas darbību. Linux ļauj nogalināt procesu, izmantojot pid
vai procesa nosaukums.
Izmantojot pgrep
komandu
Lielākā daļa Linux lietotāju ir pazīstami ar grep
komandu. The pgrep
komandu var izmantot līdzīgās rindās grep
.
pgrep
komanda, kad tiek izmantota, parāda pid
darbības procesam, kā norādīts komandā. Šī komanda būs ļoti noderīga, izmantojot pkill
komandu.
Vispārējā sintakse:
pgrep [opcijas] [raksts]
Svarīgas iespējas, kas pieejamas ar pgrep
komandu
Opcija | Apraksts |
-u | saraksta procesa ID, kas pieder konkrētam lietotājam |
-c | saskaitīt saskaņošanas procesu skaitu |
-Es | uzskaitīt tikai procesu nosaukumus |
-a | uzskaitiet procesa nosaukuma pilnu ceļu |
Ļaujiet mums parādīt izmantošanu pgrep
komanda, izmantojot piemēru.
pgrep -u gaurav rūķis
Šeit mēs vēlamies redzēt pids
procesa gnome, kas pieder lietotājam “gaurav”. Opcija -u
ļauj uzskaitīt pids
no procesiem, kas pieder konkrētam lietotājam. Šajā gadījumā lietotājs gaurav.
Izvade:
gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$
Turpinot šo apmācību, pgrep
komanda palīdzēs mums apstiprināt, vai process ir apturēts vai joprojām darbojas.
Tagad pāriesim uz pkill
komanda un tās izpilde.
Izmantojot pkill
komandu
Jūs varat izmantot pkill
komanda Linux, lai nogalinātu procesu, izmantojot procesa nosaukumu. Pat ja jūs nezināt pid
kādu procesu, pat tad jūs varat nogalināt konkrēto procesu, izmantojot pkill
komandu.
Procesus var norādīt ar pilnu nosaukumu vai daļēju nosaukumu, izmantojot pkill
komandu. Pat ja ievadāt daļēju procesa nosaukumu, pkill
komanda saskaņos visus darbojošos procesus ar atbilstošo nosaukumu, ko esat ievadījis komandā.
Sintakse:
pkill [options][process_name_pattern]
Piemērs:
Ļaujiet mums parādīt procesus, kas pašlaik darbojas, izmantojot tops
komandu. Varat arī izmantot ps
komandu, lai uzskaitītu procesus.
tops
augšā - 14:24:02 uz augšu 3:12, 1 lietotājs, vidējā slodze: 0,29, 0,48, 0,58 Uzdevumi: kopā 221, 1 skrien, 172 guļ, 0 apstādināts, 1 zombijs % CPU(s): 5.6 as, 1.0 sy , 0.0 ni, 92.9 id, 0.4 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : kopā 3928240, 610456 brīvi, 2233152 lietoti, 1084632 bufetes/kešatmiņas KiB apmaiņa: 3 7 8, 48 kopā 1187268 izdevīgums Mem PID USER PR NI VIRT RES SHR S% CPU% MEM LAIKS + COMMAND 4077 gaurav 20 0 3312128 673480 118360 S 19.6 17.1 15: 13.23 Web Content 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 Web Content 4146 gaurav 20 0 3017924 245304 120604 S 0.7 6.2 2: 01.21 Web Content 4417 gaurav 20 0 2964208 234396 119160 S 0.7 6.0 0 :59.90 Tīmekļa saturs 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0:48,20 Tīmekļa saturs 16007 gaurav 20 0 41944 3780 3116 R.0 .207: top.
Izmantojot tops
komanda terminālī parādīs vairākus procesus. Mēģināsim parādīt procesu ar noteiktu nosaukumu. Mēs izmantosim grep
komandu, lai parādītu procesu, kura nosaukums atbilst virknei “mongo”.
augšā | grep -i mongo
Piezīme: Šeit es izmantoju opciju -i, lai padarītu meklēšanu nejutīgu pret reģistru.
Šīs komandas izvade parādīs procesus, kas atbilst nosaukumam “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 mongods 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1:03,57 mongods
Tagad mēs izmantosim pkill
komandu, lai nogalinātu procesu ar nosaukumu “mongo”.
pkill mongo
Šī komanda tagad nogalinās procesa mongo. Mēs varam apstiprināt, vai process ir bijis spiests beigt, izmantojot pgrep
komanda, kas parāda pid
darbības procesu atbilstoši lietotāja norādītajiem kritērijiem.
gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$
Šī komanda neatgriezīs vērtību. Tas apstiprina, ka process “mongo” tagad tiek nogalināts, izmantojot pkill
komandu.
Opcijas, ko bieži izmanto ar pkill
komandu
Lietojot pkill
komanda mums būs nepieciešamas minētās opcijas, lai pareizi un bez piepūles izmantotu pkill
komandu.
Iespējas | Apraksts |
-f | sakrīt ar pilniem argumentiem, ieskaitot atstarpes, pēdiņas, īpašās rakstzīmes |
-u | lai informētu pkill procesu, lai tas atbilstu procesam, ko izpilda norādītais lietotājs |
-1 | atkārtoti ielādē procesu |
-9 | nogalina procesu |
-15 | graciozi pārtrauc procesu |
Apskatīsim vēl vienu piemēru pkill
komandu, izmantojot -f
opciju.
Pašlaik terminālī tiek izpildītas divas komandas, kā parādīts zemāk.
ping bbc.com ping youtube.com
Abus procesus ierosina ping
komandu. Tagad pieņemsim, ka mēs vēlamies pārtraukt tikai vienu procesu “ping youtube.com”, tad mums ir jāizmanto -f
opcija ar pkill
komanda, kas nogalina procesu ar noteiktu nosaukumu, ieskaitot atstarpes un pēdiņas no procesa nosaukuma.
Pavēli:
gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$
Rezultāts:
gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) baiti datu. 64 baiti no bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30.9 ms 64 baiti no bom12s08-in-f14.1e100.25.0:76ic.25.0. = 117 laiks = 121 ms 64 baiti no bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq = 206 ttl = 117 laiks = 86,5 ms 64 baiti no bom12s08-in-f14.1.6.472 ): icmp_seq=207 ttl=117 laiks=105 ms, pārtraukts gaurav@ubuntu:~$
Lūk, “ping youtube.com
"process tagad ir nogalināts un "ping bbc.com
” joprojām darbojas terminālī.
Gadījumā, ja mēs būtu izmantojuši pkill ping
komandu, tas būtu nogalinājis gan ping
procesiem, kas ir nevēlami.
Signāli, kas tiek izmantoti ar pkill
komandu
pkill
liek procesam beigties, nosūtot šim procesam īpašu signālu. Ir trīs iespējamie signāli, kas pkill
komanda var nosūtīt procesam atkarībā no komandas, ko lietotājs dod.
Tālāk ir pieejams pieejamo signālu saraksts.
Signāls | Specifikācija |
1 (HUP ) | atkārtoti ielādē norādīto procesu |
9 (NOGALINĀT ) | nogalina norādīto procesu |
15 (JĒDZIENS ) | maigi aptur vai pārtrauc norādīto procesu |
Šajā apmācībā mēs lielā mērā paļausimies uz NOGALINĀT
signāls. Apskatīsim dažus piemērus, lai to labāk izprastu.
Izmantojot pgrep
komandu, lai iegūtu pid
atbilst vārdam apache.
gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -KIll apache
VAI varat arī izmantot komandu ar cipariem (piem., 1, 9, 15)
pkill -9 apache
Abas iepriekš parādītās komandas nogalinās procesu apache. Apstiprinot ar pgrep
komandu vēlreiz.
gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$
Kā pgrep
komanda neatgriež nekādu izvadi, pierāda, ka process apache ir nogalināts.
Secinājums
Šajā apmācībā mēs uzzinājām par pkill
komanda un kā tā tiek izmantota procesa nogalināšanai, izmantojot tieši procesa nosaukumu. Mēs arī uzzinājām par pgrep
komanda, kas tiek izmantota, lai iegūtu procesa ID jebkuram konkrētam lietotājam. The pgrep
komanda ļauj mums pārbaudīt, vai process tiek pārtraukts.