За допомогою цих команд Linux примусово припинити роботу процесів, які не працюють
Щоб пояснити значення «процесу» найпростішими словами, це те, що це запущений екземпляр будь-якої програми або програми у вашій системі. Ви можете одночасно запускати кілька програм, наприклад переглядати веб-сторінки, слухати музику на терміналі тощо. З цими програмами пов’язано багато фонових процесів, які запускаються користувачем.
Кожна програма або програма, яка працює у вашій системі, створює кілька процесів, пов’язаних з вашою окремою програмою. Іноді це може бути проблемою, і позбутися цих процесів є єдиним варіантом, який у вас є.
«Знищення» процесу — це один із корисних варіантів, який Linux надає вам, щоб зупинити поточні процеси, будь то процес на передньому плані чи фоновий процес. У цій статті ми розглянемо такі команди, як вбити
, pkill
і killll
щоб примусово завершити будь-який процес у системі.
Навіщо вбивати процес?
Важливо зрозуміти концепцію знищення процесу, перш ніж рухатися далі в цьому підручнику. Вбивство може здатися дуже жорстоким способом вираження концепції, але образно це означає примусове припинення процесу.
Тепер, навіщо переривати або закривати поточний процес? Коли у фоновому режимі запущено кілька процесів, усі або деякі з них можуть працювати неправильно, що може призвести до неправильної роботи системи. Це затримує виконання ваших поточних завдань, оскільки несправний процес може заморозити вашу систему на деякий час.
Іноді вихід з усіх процесів, що погано працюють, здається єдиним варіантом відновлення нормальної роботи системи. Linux дозволяє вбити процес за допомогою pid
або ім'я процесу.
Використання pgrep
команда
Більшість користувачів Linux знайомі з grep
команда. The pgrep
команду можна використовувати в подібних рядках grep
.
pgrep
команда, коли використовується, відображає pid
запущеного процесу, як зазначено в команді. Ця команда буде дуже корисною під час використання pkill
команда.
Загальний синтаксис:
pgrep [параметри] [шаблон]
Важливі опції, доступні з pgrep
команда
Варіант | Опис |
-u | список ідентифікатора процесу, що належить певному користувачеві |
-c | підрахувати кількість процесів збігу |
-Я | список лише імен процесів |
-а | список повного шляху імені процесу |
Давайте продемонструємо використання pgrep
команду на прикладі.
pgrep -u гаурав гном
Тут ми хочемо побачити 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. 1187268 допомогло Mem ПІД КОРИСТУВАЧА ПР Н.І. ВИРТ РЕМ SHR S% CPU% MEM часу + команда 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 гном-оболонки кореня 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 722 480 25048 18272 S 0,7 0,6 0: 06,84 гнома-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 Веб-вміст 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0:48,20 Веб-вміст 16007 gaurav 20 0 41944 3780 3116 R 3116 вгору .
Використання зверху
команда відобразить кілька процесів на вашому терміналі. Спробуємо відобразити процес під певною назвою. Ми будемо використовувати 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 1 158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,31 mongod 1 158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,33 mongod 1 158 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 мс 64 байти з bom12s08-in-f14.1e100.net : 1462.mpse (1462.mpse) =117 час=121 мс 64 байти з bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 час=86,5 мс 64 байти з bom12s08-in-f12.net (142.250.67.206): ): icmp_seq=207 ttl=117 time=105 мс Припинено gaurav@ubuntu:~$
Тут «пінг на youtube.com
” процес тепер припинено, а “ping bbc.com
” все ще працює на терміналі.
На випадок, якби ми використовували pkill ping
команди, це вбило б обох пінг
процесів, що небажано.
Сигнали, що використовуються з pkill
команда
pkill
змушує процес завершити роботу, надсилаючи цьому процесу певний сигнал. Є три можливі сигнали, які pkill
команда може надіслати процесу залежно від команди, яку дає користувач.
Нижче наведено список доступних сигналів.
Сигнал | Специфікація |
1 (HUP ) | перезавантажує вказаний процес |
9 (ВБИТИ ) | вбиває вказаний процес |
15 (ТЕРМІН ) | плавно зупиняє або перериває вказаний процес |
У цьому підручнику ми будемо в значній мірі покладатися на ВБИТИ
сигнал. Давайте розглянемо кілька прикладів, щоб краще це зрозуміти.
Використання pgrep
команда, щоб отримати pid
відповідність імені apache.
gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -вбити apache
АБО ви також можете використовувати команду з числами (наприклад, 1, 9, 15)
pkill -9 apache
Обидві команди, показані вище, вб'ють процес apache. Підтверджуючи за допомогою pgrep
команда знову.
gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$
Як pgrep
команда не повертає результатів, доводить, що процес apache було знищено.
Висновок
У цьому уроці ми дізналися про pkill
і як вона використовується для знищення процесу за допомогою безпосередньо назви процесу. Ми також дізналися про pgrep
команда, яка використовується для отримання ідентифікатора процесу, запущеного будь-яким конкретним користувачем. The pgrep
Команда дозволяє нам перехресно перевірити, чи загинув процес.