Зміст
Кожна програма, утиліта або якийсь інший елемент операційної системи Linux реалізовується у вигляді одного або декількох процесів, які функціонують у фоновому або активному режимі. Кожен такий процес споживає певну кількість системних ресурсів і діє відведений проміжок часу. Іноді трапляються ситуації, що вимагають негайного завершення (&171; вбивства & 187;) такої операції, що пов'язано з непотрібністю її виконання або виникненням помилок. В рамках сьогоднішньої статті ми хочемо поговорити про методи здійснення цього завдання.
Типи сигналів для завершення процесів
Для початку торкнемося теми алгоритмів завершення процесів в дистрибутивах, заснованих на Linux. Дія системних засобів залежить від посилаються сигналів, які мають різні значення і змушують виконувати певну послідовність завдань. Нижче будуть представлені способи, де можна вказувати тип сигналу для &171;вбивства&187; операції, тому ми рекомендуємо вивчити їх все, щоб розібратися в правильності застосування.
- SIGINT &8212; стандартний сигнал, що використовується і в графічних оболонках. При його відправленні процес зберігає всі зміни, завершує виконувані дії і тільки потім відключається. Якщо ви працюєте через &171;Термінал&187; , використовуйте комбінацію клавіш Ctrl + C , щоб швидко &171;вбити&187; поточний процес.
- SIGQUIT &8212; практично не відрізняється від попереднього сигналу, але при його відправці програма вже сама вирішує, чи варто завершувати роботу. При цьому створюється дамп пам'яті, що може бути корисно певним користувачам. Це другий і останній сигнал, який можна надіслати комбінацією клавіш під час взаємодії з &171;терміналом&187; . Для цього використовується комбінація Ctrl + / .
- SIGHUP & 8212; використовується для розриву зв'язку з &171;терміналом&187; . Рекомендується задіяти цей сигнал, якщо потрібно перервати з'єднання з Інтернетом.
- SIGTERM &8212; відразу ж видаляє процес, але його дочірні опції продовжують виконуватися до повного завершення операцій, а після проводиться звільнення системних ресурсів.
- SIGKILL &8212; аналогічний попередньому сигнал, але при цьому залишилися дочірні завдання не припиняють своє функціонування.
Тепер Ви знаєте про всі доступні сигнали, що використовуються при &171;вбивстві&187; процесів в різних дистрибутивах Linux. Використовуйте їх разом з наведеними в методах нижче командами в якості аргументу.
Завершення процесів у Linux
Існують різні системні засоби, що дозволяють &171;вбити&187; який-небудь процес. Іноді для цього доводиться дізнаватися його ідентифікатор, а в інших ситуаціях досить тільки назви. Далі ми пропонуємо детально вивчити всі представлені методи, щоб знайти оптимальний для себе і виконувати його при необхідності, враховуючи описані раніше сигнали.
Спосіб 1:&171; Системний монітор & 187;
Почнемо з найпростішого, але менш варіативного методу, який здійснюється через програму графічного інтерфейсу і буде корисний тим користувачам, хто просто хоче завершити процес, не вдаючись при цьому до запуску термінальних команд. Розглянемо цю операцію на стандартній оболонці дистрибутива Ubuntu.
- Перейдіть до меню & 171; показати додатки & 187; , де відшукайте &171;Системний монітор&187; і запустіть його, клікнувши по значку лівою кнопкою миші.
- У вікні, що з'явиться, ви побачите список процесів. Знайдіть ім'я необхідної для завершення завдання.
- Додатково ви можете переміститися в властивості об'єкта через контекстне меню, щоб подивитися всю інформацію про нього.
- Клацніть правою кнопкою миші по рядку і виберіть пункт & 171; завершити&187; . Це ж дія виконується через гарячу клавіш Ctrl + E . Ще внизу є кнопка, що дозволяє завершити процес без виклику контекстного меню.
- Якщо ж операція не завершилася з яких-небудь причин, задійте опцію & 171; вбити & 187; .
- Ознайомтеся з інформацією в попередженні та підтвердьте свої наміри.
У переважній більшості графічних оболонок системний монітор реалізований схожим чином, тому якихось проблем з розумінням інтерфейсу виникнути не повинно.
Спосіб 2: команда kill
Для застосування команди kill буде потрібно знання PID (ідентифікатора процесу), оскільки саме так здійснюється застосування аргументів. У статті нижче ми детально описали операцію перегляду списку процесів для отримання різної інформації. Обов'язково ознайомтеся з нею перед виконанням наступної інструкції.
Детальніше: Перегляд списку процесів у Linux
Далі залишається тільки запустити&171; Термінал & 187;
і задіяти згадану команду. Для початку вивчіть її простий синтаксис:
kill-сигнал pid_процесу
. Тепер давайте розглянемо приклад&171; вбивства & 187;.
- Відкрийте меню програм і запустіть & 171; Термінал&187; .
- Введіть просту команду
ps aux | grep name
для отримання інформації про вказаний процес, де name &8212; ім'я бажаної програми. - У відображеному результаті відшукайте головний PID і запам'ятайте його.
- Введіть
kill PID
для завершення процесу через сигнал SIGTERM . Замість PID вам потрібно написати визначений раніше номер ідентифікатора. - Тепер ви можете використовувати знову
ps aux | grep name
, щоб перевірити, чи була завершена операція. - Те ж саме дію по&171; вбивства & 187; здійснюється і через інший аргумент шляхом введення
kill -TERM
. - Якщо наведені вище команди не принесли ніякого результату, потрібно позначити сигнал SIGKILL
, вставивши команду
kill -KILL
.
Врахуйте, що деякі процеси запускаються від імені суперкористувача, відповідно, для їх завершення потрібні привілеї. Якщо при спробі введення kill
Ви отримуєте інформацію
& 171; відмовлено у доступі&187;
, введіть перед основною командою
sudo
, щоб вийшло
sudo kill
.
Спосіб 3: Команда pkill
Наступна консольна утиліта називається pkill і є модернізованою версією попередньої команди. Тут все реалізовано точно за таким же образом, але замість PID від користувача потрібно вводити назву процесу.
- Для надсилання сигналу SIGTERM
використовуйте
pkill + назва процесу
. - Після ви можете переконатися, що операція була успішно завершена.
- Задайте вручну тип сигналу, ввівши таку форму
pkill -TERM ping
, де -TERM &8212; необхідний сигнал. - Використовуйте
pgrep
для визначення того, що процес більше не виконується, якщо ви не хочете задіяти ps
Спосіб 4: команда killall
Як останній спосіб ми розглянемо команду під назвою killall . Її функціонування і синтаксис виглядають точно так само, як у всіх попередніх утиліт, тому зупинятися на цьому ми не будемо. Тільки уточнимо, що ця команда дозволяє завершити всі процеси із зазначеною назвою разом і може бути використана в різних випадках.
Тепер Ви знаєте все про завершення процесів у Linux. Перед виконанням методів переконайтеся, що примусове &171;вбивство&187; не призведе до системних збоїв. Якщо ж жоден варіант не дозволив повністю позбутися від процесу, спробуйте просто перезавантажити комп'ютер або видалити софт, пов'язаний з цією опцією.