Принудително прекратете неправилно работещи процеси, като използвате тези команди на Linux
Обясняването на значението на „Процес“ с най-простите думи е, че това е работещ екземпляр на всяко приложение или програма във вашата система. Може да изпълнявате няколко приложения едновременно, като например сърфиране, слушане на музика, работеща на вашия терминал и т.н. Има много фонови процеси, свързани с тези приложения, които се изпълняват от потребителя.
Всяко приложение или програма, която работи във вашата система, създава множество процеси, свързани с вашето едно приложение. Понякога това може да е проблем и да се отървете от тези процеси е единствената възможност, която имате.
„Убиването“ на процес е една полезна опция, която Linux ви предоставя да спрете текущите процеси, било то процес на преден план или фонов процес. В тази статия ще прегледаме командите като убиват
, pkill
и killall
за принудително прекратяване на всеки процес в системата.
Защо да убиеш процес?
Разбирането на концепцията за убиване на процес е важно, преди да продължите напред в този урок. Убийството може да изглежда много брутален начин за изразяване на концепцията, но това, което образно означава, е насилствено прекратяване на процес.
Сега, защо прекратявате или прекратявате текущ процес? Когато множество процеси се изпълняват на заден план, всички или няколко от тях може да не работят и да доведат до неправилно поведение на системата ви. Това забавя текущите ви задачи, тъй като неизправният процес може да замрази системата ви за известно време.
Понякога излизането от всички неправилно функциониращи процеси изглежда е единствената възможност за възстановяване на нормалността на вашата система. Linux ви позволява да убиете процес с помощта на pid
или името на процеса.
Използвайки pgrep
команда
Повечето потребители на Linux са запознати с grep
команда. В pgrep
командата може да се използва на подобни редове на grep
.
pgrep
команда, когато се използва, показва pid
на изпълнявания процес, както е посочено в командата. Тази команда ще се окаже много полезна, докато използвате pkill
команда.
Общ синтаксис:
pgrep [опции] [шаблон]
Важни опции, налични с pgrep
команда
Опция | Описание |
-u | списък с идентификатор на процеса, притежаван от конкретен потребител |
-° С | пребройте броя на съвпадащите процеси |
-аз | избройте само имена на процеси |
-а | списък с пълния път на името на процеса |
Нека демонстрираме използването на pgrep
команда с помощта на пример.
pgrep -u gaurav gnome
Тук искаме да видим pids
на процеса gnome, който е собственост на потребителя „gaurav“. Опция -u
ви позволява да изброите pids
на процесите, притежавани от конкретен потребител. В този случай потребителят gaurav.
Изход:
gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$
Докато продължаваме напред с този урок, pgrep
командата ще ни помогне да потвърдим дали процесът е убит или все още работи.
Нека сега да преминем към pkill
команда и нейното изпълнение.
Използвайки pkill
команда
Можете да използвате pkill
команда в Linux, за да убиете процеса, използвайки името на процеса. Дори и да не познавате pid
на някакъв процес, дори тогава можете да убиете този конкретен процес с помощта на pkill
команда.
Процесите могат да бъдат посочени с пълното или частично име, докато се използва pkill
команда. Дори ако въведете частичното име на процеса, pkill
командата ще съпостави всички работещи процеси със съответстващото име, което сте въвели в командата.
Синтаксис:
pkill [опции][шаблон_име_на_процеса]
Пример:
Нека покажем процесите, които се изпълняват в момента с помощта на връх
команда. Можете също да използвате п.с
команда за изброяване на процесите.
връх
отгоре - 14:24:02 нагоре 3:12, 1 потребител, средно натоварване: 0,29, 0,48, 0,58 Задачи: общо 221, 1 бягане, 172 спящи, 0 спряни, 1 зомби %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 общо, 610456 безплатно, 2233152 използвани, 1084632 buff/cache KiB Swap7, 480 общо: 048, използвани общо 048 1187268 полза Mem PID USER PR NI Вирт ВЕИ СБР S% CPU% MEM TIME + 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 гном черупка 1197 корен 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 гном-Терминал 3915 Gaurav 20 0 2804900 231524 111228 S 0,7 5,9 0: 54,42 уеб съдържание 4146 Gaurav 20 0 3017924 245304 120604 S 0,7 6,2 2: 01,21 уеб съдържание 4417 Gaurav 20 0 2964208 234396 119160 S 0.7 6.0 0 :59,90 Уеб съдържание 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0:48,20 Уеб съдържание 16007 gaurav 20 0 41944 3780 3170 R 0.170 отгоре.
Използвайки връх
командата ще покаже множество процеси на вашия терминал. Нека се опитаме да покажем процеса с конкретно име. Ще използваме grep
команда за показване на процес, чието име съответства на низа „mongo“.
отгоре | grep -i mongo
Забележка: Тук използвах опцията -i, за да направя търсенето нечувствително към главни букви.
Резултатът от тази команда ще покаже процесите, съответстващи на името "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 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1:03,57 mongod
Сега ще използваме pkill
команда за убиване на процеса, наречен „mongo“.
pkill mongo
Тази команда сега ще убие процеса mongo. Можем да потвърдим дали процесът е бил принуден да прекрати, като използваме pgrep
команда, която показва pid
на текущия процес според критериите, посочени от потребителя.
gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$
Тази команда няма да върне стойност. Това потвърждава, че процесът „mongo“ вече е убит с помощта на pkill
команда.
Опции, често използвани с pkill
команда
Докато използвате pkill
команда ще ни трябват споменатите опции за правилно и безпроблемно използване на pkill
команда.
Настроики | Описание |
-f | съвпадение с пълни аргументи, включително интервали, кавички, специални знаци |
-u | за да информира процеса pkill да съответства на процеса, изпълняван от посочения потребител |
-1 | презарежда процеса |
-9 | убива процеса |
-15 | грациозно прекъсва процес |
Нека видим още един пример за pkill
команда с помощта на -f
опция.
Има две команди, които в момента се изпълняват на терминала, както е показано по-долу.
ping bbc.com ping youtube.com
И двата процеса се инициират от пинг
команда. Сега, да предположим, че искаме да прекратим само един процес „ping youtube.com“, тогава трябва да използваме -f
опция с pkill
команда, която убива процес с конкретно име, включително интервалите и кавичките от името на процеса.
Команда:
gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$
Резултат:
gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) байта данни. 64 байта от bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30.9 ms 64 байта от bom12s08-in-f14.1e100.net (142.250.67.206): .q. =117 време=121 мс 64 байта от bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 време=86,5 мс 64 байта от bom12s08-in-f16.net (142.250.67.206): ): icmp_seq=207 ttl=117 време=105 мс Прекратено gaurav@ubuntu:~$
Тук „пинг youtube.com
“ процесът вече е убит и “ping bbc.com
” все още работи на терминала.
В случай, че бяхме използвали pkill пинг
команда, това би убило и двамата пинг
процеси, което е нежелателно.
Сигнали, използвани с pkill
команда
pkill
принуждава процес да се откаже чрез изпращане на специфичен сигнал към този процес. Има три възможни сигнала, които pkill
командата може да изпрати на процеса в зависимост от командата, която потребителят дава.
Следва списък на наличните сигнали.
Сигнал | Спецификация |
1 (HUP ) | презарежда посочения процес |
9 (УБИЙ ) | убива посочения процес |
15 (СРОК ) | внимателно спира или прекратява посочения процес |
За този урок ще разчитаме в голяма степен на УБИЙ
сигнал. Нека да преминем през няколко примера, за да го разберем по-добре.
Използвайки pgrep
команда, за да получите pid
съвпадение с името apache.
gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -УБИЙ Апач
ИЛИ можете също да използвате командата с числа (напр. 1, 9, 15)
pkill -9 apache
И двете команди, показани по-горе, ще убият процеса apache. Потвърждаване с pgrep
команда отново.
gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$
Тъй като pgrep
командата не връща изход, доказва, че процесът apache е убит.
Заключение
В този урок научихме за pkill
команда и как се използва за убиване на процеса, като се използва директно името на процеса. Научихме и за pgrep
команда, която се използва за извличане на идентификатора на процеса на стартиран от всеки конкретен потребител. В pgrep
командата ни позволява да проверим дали процесът е убит.