Вбивство процесу - це іноді єдиний спосіб його позбутися. Незважаючи на жорстку назву, "вбивство" процесу просто означає "змусити його кинути". Ось як це зробити за допомогою командного рядка Linux або macOS.
Що таке процес?
Запуск таких програм, як веб-браузер, фонові процеси, пов'язані з робочим середовищем робочого столу, та системні служби Linux - це всі процеси.
Ви можете об'єднати процеси у дві групи:
- Процеси переднього плану - це ті, що були запущені або запущені користувачем. Вони можуть знаходитись у вікні терміналу, а можуть бути графічним додатком.
- Фонові процеси - це всі процеси, які запускаються автоматично і не мають жодної взаємодії з користувачами. Вони не очікують введення від користувачів, а також не представляють їм результати чи результати. Фонові процеси - це речі, такі як послуги та демони.
Якщо процеси на передньому плані - це фронт співробітників театру та акторів, фонові процеси - це закулісна команда.
Коли процеси погано поводяться або працюють неправильно, вони можуть затримати занадто багато процесорного часу, витратити вашу оперативну пам'ять або ввести щільний обчислювальний цикл і не реагувати. Графічні програми можуть відмовити у відповіді на клацання миші. Програми терміналів ніколи не повернуть вас до командного рядка.
Гуманна відповідь
«Вбивство» процесу означає просто «змусити процес припинити роботу». Це може знадобитися, якщо процес відмовляється відповідати.
Linux забезпечує
вбити
,
pkill
, і
killall
команди, що дозволяють вам робити саме це. Ці команди можуть бути використані з будь-яким типом процесу, графічним або командним рядком, переднім планом або фоном.
Команда вбивства
Використовувати
вбити
, ви повинні знати ідентифікатор процесу (PID) процесу, який ви хочете припинити.
ps
команда може бути використана для пошуку PID процесу.
Мати
ps
пошук у всіх процесах використання
-є
(всі процеси). Трубопровід на виході
менше
доцільно, цього буде зовсім небагато. Тип
ps
, пробіл,
-є
, пробіл,
|
(символ труби), інший пробіл, а потім введіть
менше
. Натисніть Enter, щоб виконати команду.
ps -e | менше
Це дасть вам список процесів, схожий на наведений нижче знімок екрана. Ви можете шукати вперед у
менше
за допомогою
/
за допомогою клавіші
?
ключ.
Щоб розпочати процес, який вас цікавить, виведіть результат з
ps
через
зчеплення
і вкажіть назву - або частину назви - процесу.
ps -e | grep шутер
Після того, як ви знайшли PID процесу, який ви хочете припинити, передайте його в
вбити
команда як параметр. Щоб припинити
затвор
процес, визначений попередньою командою, використовуйте цю команду:
вбити 2099
вбити
команда - мовчазний вбивця - вона не дає вам жодного відгуку, якщо вона була успішною.
Команда pkill
pkill
команда дозволяє вбити процес - або процеси - за назвою. Вам не потрібно ідентифікувати процес за ПІД. Використовувати
pkill
ви вводите пошуковий термін, який
pkill
використовує для перевірки за списком запущених процесів. Процеси узгодження припиняються. Тож ви повинні бути впевнені, що ви правильно написали цей пошуковий термін.
Як захисну сітку ви можете використовувати
pgrep
команди
раніше
ви використовуєте
pkill
команди.
pgrep
команда також приймає пошуковий термін. У ньому буде вказано PID кожного процесу, який відповідає пошуковому терміну. Це безпечно, оскільки
pgrep
не видаватиме процесам жодного сигналу вбивства, і якщо ви неправильно введете пошуковий термін, ви не вб’єте інший процес помилково. Ви можете переконатися, що пошуковий термін правильно продуманий, перш ніж передати його
pkill
. І те, і інше
pkill
і
pgrep
поводитися з пошуковим терміном так само. Їх лікування настільки схоже, що вони
поділитися однією і тією ж сторінкою користувача
.
Припустимо, існує процес із назвою "subq". Ми використаємо
ps -u dave | grep
команда зазирнути за завісу. Ви можете бачити, що “subq” відповідатиме цьому процесу та цьому процесу самостійно. Це було просто для того, щоб ви могли бачити повну назву процесу.
ps -u dave | grep subq
Припустимо, наш користувач
не зробив
зробив це; все, що вони знають, це те, що назва процесу містить підрядок “subq.” Вони використовують
pgrep
щоб перевірити, чи є лише одне збіг із пошуковим терміном. Потім вони використовують цей пошуковий термін за допомогою
pkill
.
pgrep subq
pkill subq
Можна використовувати
pkill
вбити кілька процесів одночасно. Тут користувач запускає
pgrep
щоб перевірити, скільки процесів запустив Chrome. Вони використовують
pkill
щоб їх усіх вбити. Потім вони перевіряють у
pgrep
що їх усіх видалено.
pgrep хром
pkill хром
pgrep хром
Якщо запущено кілька процесів з однаковою назвою, але ви не хочете вбивати їх усі, ви можете використовувати
pgrep
за допомогою
-f
(командний рядок), щоб визначити, який процес є яким. Простим прикладом може бути два
пінг
процесів. Ви хочете вбити одного з них, але не іншого. Ви можете використовувати їх командні рядки, щоб розрізнити їх. Зверніть увагу на використання лапок для обгортання параметра командного рядка.
pgrep -f "пінг 192.168.4.22"
pkill -f "пінг 192.168.4.22"
Команда killall
Увага
: В операційних системах Solaris та OpenIndiana
killall
команда буде
вбити всі процеси, які вам належать
. Якщо ви кореневі або якщо ви видали
sudo killall
ви перезавантажите свій комп’ютер! Під час дослідження цієї статті ця поведінка була підтверджена останньою версією OpenIndiana Hipster 2018.10.
killall
команди
діє подібним чином
до
pkill
команда, але з певною різницею. Замість того, щоб передавати команді пошуковий термін, ви повинні вказати точну назву процесу.
Ви не можете надати часткову відповідність імені процесу; ви повинні вказати повну назву процесу, як показано:
killall shutt
затвор
-Y
Опція (молодша за) дозволяє вбивати процеси, які вже працювали
менше
ніж вказаний період. Період дається цифрами, за якими слідує одна з цих одиниць:
- s (секунди)
- м (хв.)
- год (години)
- d (дні)
- ш (тижні)
- М (місяці, примітка, велика “М”)
- y (роки)
Щоб убити процес, який називається
мати
що щойно запущений, і залиште всі попередні екземпляри
мати
працює, ви можете використовувати наступні параметри за допомогою
killall
, якщо ви зреагували протягом двох хвилин:
Зменш мене чи мене
-The
Опція (старше) дозволяє вбивати процеси, які працювали довше, ніж зазначений період. Ця команда вб'є всіх
ssh
з'єднання, які працюють довше доби:
killall -o 1d sshd
Не будь занадто тригерним щасливим
Ці команди дозволять вам точно і точно визначити та припинити помилкові процеси.
Завжди будь обережним. По-перше, переконайтеся, що процес, який ви збираєтеся вбити, справді той, який ви хочете. По-друге, перевірте - будьте обережні та переконайтесь, що цільовий процес - це той, який ви хочете закінчити. Приступайте до припинення процесу, коли будете задоволені.