Як закрити процес у Linux

Завершення процесів у 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. Якщо у вас виникли труднощі, залиште свій коментар нижче.