Завершення процесів у Linux: Повний гід
Усі ми стикалися з ситуацією, коли наш комп’ютер працює надзвичайно повільно, зависаючи навіть під час виконання найпростіших завдань. У Windows для моніторингу та завершення процесів, які споживають значну кількість пам’яті, є лише диспетчер завдань. Однак, в Linux користувачі мають в своєму розпорядженні цілий арсенал команд та графічних інструментів для ефективного управління цими процесами. У цій статті ми розглянемо кілька простих методів командного рядка (CLI), а також способи використання графічного інтерфейсу для завершення процесів в операційній системі Linux.
Керування процесами в Linux (2023 рік)
Перш ніж ми зануримося у світ управління процесами в Linux, давайте з’ясуємо, що таке процес і що являє собою ідентифікатор процесу в цій операційній системі.
Що таке процеси в Linux?
У Linux кожна запущена програма відома як “процес”, а сам виконуваний файл називається програмою. Коли запускається будь-яка програма, створюється процес, якому присвоюється унікальний п’ятизначний ідентифікаційний номер, відомий як “ID процесу”. Коли процес завершує свою роботу або примусово зупиняється, його ідентифікатор стає доступним для наступного процесу.
Завершення процесів через командний рядок
Хоча використання терміналу може здаватися складнішим, ніж графічні інструменти, керування процесами стає значно ефективнішим, коли ви ознайомитеся з командами та їхніми параметрами.
Сигнали завершення
Коли ви намагаєтеся завершити процес через GUI або CLI, ядро Linux надсилає процесу сигнал про завершення. Процес, в свою чергу, реагує на отриманий сигнал. Кожному сигналу присвоєно певний номер, який програма здатна швидко розпізнати. Існує багато типів сигналів завершення, але ми зосередимось на основних:
Сигнал | Числове значення | Опис |
SIGHUP | 1 | “Signal Hangup” – надсилається, коли термінал закривається. |
SIGINT | 2 | “Переривання сигналу” – надсилається, коли користувач хоче завершити процес. |
SIGKILL | 9 | “Знищення сигналу” – надсилається для негайного завершення процесу. |
SIGTERM | 15 | “Завершення сигналу” – використовується для завершення процесу та звільнення ресурсів. |
SIGSTOP | 19 (ARM, x86), 17 (ALPHA), 23 (MIPS), 24 (PA-RISC) | “Стоп сигнал” – використовується для призупинення процесу з можливістю його подальшого відновлення. |
Найчастіше використовуються сигнали SIGKILL (9) і SIGTERM (15).
Визначення ідентифікаторів процесів
Перш ніж завершити процес, потрібно знати деякі його деталі, зокрема, ідентифікатор процесу (PID). Для отримання інформації про процеси використовуйте команду ps
:
ps
Використання команди ps
може бути не дуже зручним, якщо потрібно шукати конкретний процес. Замість цього, можна використовувати команду grep
в поєднанні з ps
:
ps | grep <назва_процесу>
Для спрощення процесу, можна використовувати команду pidof
, яка виводить лише ідентифікатор запущеного процесу:
pidof <назва_процесу>
Завершення процесу за допомогою команди kill
Після отримання ідентифікатора процесу, який потрібно завершити, найпоширенішою командою є kill
. Її синтаксис виглядає так:
kill <сигнал> <ідентифікатор_процесу>
Параметр <сигнал>
не є обов’язковим. Якщо його не вказано, команда kill
відправить сигнал SIGTERM (15) за замовчуванням. Ви можете використовувати будь-який інший сигнал, вказавши його числове значення або назву.
Завершення процесу за допомогою команди pkill
Якщо пошук ідентифікатора процесу здається незручним, можна скористатися командою pkill
. Вона шукає процеси, що відповідають певному шаблону, та завершує їх. Синтаксис команди виглядає наступним чином:
pkill <параметри> <шаблон>
Ось деякі корисні параметри для pkill
:
Параметр | Опис |
-n |
Вибирає лише останній процес, який відповідає ідентифікатору процесу. |
-u |
Вибирає процеси, які належать конкретному користувачеві. |
-x |
Вибирає процеси, які точно відповідають шаблону. |
Це особливо корисно, коли кілька користувачів використовують різні екземпляри однієї програми. Наприклад, на знімку екрана нижче ми завершуємо екземпляр “gedit”, що належить користувачу “intel”:
pkill -u intel gedit
Завершення процесу за допомогою команди killall
Команда killall
працює подібно до kill
, але вона завершує всі процеси з відповідним ім’ям, незалежно від користувача. За замовчуванням відправляє сигнал SIGTERM. Важливо відзначити, що команда killall
не може завершити сама себе, але може завершити інші екземпляри killall
. Синтаксис використання команди killall
виглядає так:
killall <параметри> <назва_процесу>
Нижче наведено деякі параметри для killall
:
Параметр | Опис |
-r |
Інтерпретує <назва_процесу> як регулярний вираз, та завершує процеси, які відповідають цьому шаблону. |
-u |
Завершує вказаний процес, що належить зазначеному власнику. |
-o |
Завершує процеси, які старші за певний час. |
-y |
Завершує процеси, які молодші за певний час. |
Команда killall
корисна для завершення серії однотипних процесів або всіх процесів, що належать конкретному користувачеві. Наприклад, ми завершуємо всі процеси “sleep” тривалістю 500 секунд:
killall -v сон
Завершення процесів за допомогою команд top
та htop
Цей метод є корисним, коли ви не знаєте, які процеси використовують найбільшу кількість системних ресурсів. Команди top
та htop
дозволяють переглядати всі запущені процеси та швидко завершувати їх. Для запуску top
використовуйте наступну команду:
top
Основні результати команди top
відображаються у вигляді стовпців:
- PID – ідентифікатор процесу
- USER – власник процесу
- PR – пріоритет процесу
- NI – значення приємності
- VIRT – обсяг віртуальної пам’яті
- RES – обсяг фізичної пам’яті
- SHR – обсяг спільної пам’яті
- S – поточний стан процесу (D – безперервний сон, R – виконання, S – сон, T – зупинено, Z – зомбі)
- %CPU – відсоток використання ЦП
- %MEM – відсоток використання оперативної пам’яті
- TIME+ – загальний час виконання процесу
- COMMAND – команда, що запустила процес
Для пошуку потрібного процесу, скористайтеся клавішами зі стрілками або введіть “L” та вкажіть ім’я процесу. Щоб завершити процес, натисніть “k”, введіть ідентифікатор процесу або залиште його на вибраному, потім натисніть “ENTER”. Введіть сигнал завершення та натисніть “ENTER”. Для виходу з top
натисніть “q”.
Хоча top
показує детальну інформацію, вона не дуже зручна для початківців. Команда htop
має більш зручний інтерфейс. Вона показує деталі у окремому вигляді, що не захаращує вікно терміналу. Для встановлення htop
використовуйте команду:
sudo apt install -y htop
Для запуску htop
використовуйте команду:
htop
Щоб завершити програму, перейдіть до назви процесу, натисніть “F9”, а потім “ENTER”. Для пошуку процесу натисніть “F3”, введіть його назву та натисніть “ENTER”. Ім’я процесу буде виділено, натисніть “F9”, а потім “ENTER” для завершення процесу.
Завершення процесу через системний монітор
Якщо командний рядок для вас складний, скористайтеся вбудованим інструментом системного моніторингу. Щоб використовувати його, відкрийте інструмент з меню “Програми”.
1. У вікні системного монітора ви побачите три вкладки: “Процеси”, “Ресурси” та “Файлова система”. Перейдіть на вкладку “Процеси”. Тут ви побачите всі запущені процеси. Натисніть “CTRL+F” для пошуку процесу. Клікніть по назві процесу, який потрібно завершити, і натисніть “Завершити процес”.
2. З’явиться підтвердження. Натисніть на червону кнопку “Завершити процес”.
Питання, що часто задаються
Як зупинити всі процеси в Linux?
Щоб зупинити всі процеси, окрім системних та процесів ініціалізації, скористайтеся командою pkill
або killall
з параметром -u <ім'я_користувача>
:
pkill -u <ім'я_користувача>
killall -u <ім'я_користувача>
Для завершення всіх процесів, включно з системою ініціалізації, натисніть “ALT + Prt Sc + o”.
Чи можна безпечно завершувати процеси?
Завершення несуттєвих фонових процесів або процесів, що споживають багато пам’яті, може звільнити ресурси для інших процесів. Однак, перед завершенням процесу, впевніться, що це не важливий системний процес.
Які фонові процеси в Linux?
Фонові процеси в Linux можуть працювати без взаємодії з користувачем. Їх можна переглянути за допомогою команд top
, htop
, ps
тощо.
Що таке процес зомбі?
Процес, який був завершений, але все ще займає місце в пам’яті, називається зомбі-процесом.
Що робить CTRL + Z у Linux?
CTRL + Z надсилає сигнал SIGTSTP, який призупиняє процес і переводить його у фоновий режим. У цьому стані процес неможливо завершити, поки він не буде повернутий на передній план.
Легке завершення процесів у Linux
Завершення процесів, які використовують багато пам’яті, є важливою навичкою для кожного користувача. У цій статті ми розглянули як методи командного рядка (killall
, pkill
), так і методи GUI для завершення процесів. Також, ми детально описали, як використовувати інструменти top
та htop
. Якщо у вас виникли труднощі, залиште свій коментар нижче.