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

| | 0 Comments| 7:16 AM
Categories:

У всіх нас були ті дні, коли наш комп’ютер працює надзвичайно повільно та заїкається під час виконання навіть основних завдань. У Windows у вас є лише диспетчер завдань Windows для перевірки та припинення процесів, які не такі важливі, але споживають величезну кількість пам’яті. Однак у Linux у вас є цілий арсенал команд і графічних інструментів для керування цими завданнями. У цій статті ми покажемо кілька простих методів командного рядка (CLI), а також методів графічного інтерфейсу для того, як завершити процес у Linux.

Припинення процесу в Linux (2023)

Але перш ніж ми зануримося у світ управління процесами в Linux, давайте розберемося, що саме таке процес і що таке ідентифікатор процесу в системах Linux.

Що таке процеси в Linux

У Linux кожен запущений екземпляр програми називається «процесом», а кожен виконуваний файл — програмою. Коли виконується будь-яка програма, створюється процес, і кожному процесу присвоюється унікальний 5-значний ідентифікаційний номер, відомий як «ID процесу». Коли процес завершує виконання або примусово припиняється, його ідентифікатор процесу призначається наступному за чергою процесу.

Припиніть процес через командний рядок у Linux

Хоча використання терміналу іноді може здатися страшним порівняно з використанням інструментів графічного інтерфейсу користувача для базових завдань, керування різними процесами стає набагато легшим, коли ви осягнете команди та їхні різні параметри.

Сигнали завершення

Коли ви намагаєтеся припинити процес або з GUI, або з CLI в Linux, ядро ​​надсилає процесу сигнал про завершення. Процес діє відповідно, залежно від отриманого сигналу. Кожному з цих сигналів присвоюється певний номер, який програма швидко розуміє. Існує багато типів сигналів завершення, але ми пояснили лише основні з них:

SignalNumeric ValueDescriptionSIGHUP1Це означає “Signal Hangup”
Він надсилається, коли термінал закрито.SIGINT2Це означає «переривання сигналу».
Він надсилається, коли користувач завершує процес.SIGKILL9Це означає «Знищення сигналу».
Він надсилається, коли вам потрібно негайно завершити процесSIGTERM15Це означає «Завершення сигналу»
Він надсилається, коли вам потрібно завершити процес і звільнити спожиті ресурсиSIGSTOP19 – для ARM, x86
17 – для АЛЬФА
23 – для МІПС
24 – для PA-RISC це означає «Стоп сигналу»
Він надсилається, коли вам потрібно призупинити процес і відновити його пізніше. Найпоширенішими сигналами є SIGKILL (9) і SIGTERM (15).

Визначте ідентифікатори процесу

Перш ніж завершити процес, вам потрібно знати деякі деталі процесу, такі як ідентифікатор процесу, час виконання тощо. Щоб дізнатися деталі процесу, скористайтеся командою ps:

ps

За допомогою команди ps вам потрібно шукати процес, прокручуючи та записуючи його назву, що може бути громіздким. Замість цього ви навіть можете використовувати команду grep із командою ps у конвеєрі, як показано нижче:

  Як записати вихід динаміка в Linux

ps | grep <назва_процесу>

Щоб спростити роботу, існує окрема команда, яка показує лише ідентифікатор будь-якого запущеного процесу, який вам потрібно знати. Синтаксис використання команди pidof такий:

pidof <назва_процесу>

Припиніть процес за допомогою команди kill

Після того, як ви запам’ятали ідентифікатор процесу, який потрібно завершити, найпоширенішою командою для завершення програм у вашій системі Linux є команда kill. Синтаксис використання команди kill такий:

kill <сигнал> <ідентифікатор_процесу>

Параметр є необов’язковим, а команда kill надсилає сигнал SIGTERM (15) за умовчанням. Ви можете надіслати будь-який інший сигнал за його числовим значенням або фактичною назвою сигналу з таблиці вище.

Припиніть процес за допомогою команди pkill

Якщо ви вважаєте, що шукати ідентифікатор процесу незручно, ви можете скористатися командою pkill. Він шукає процеси, які відповідають шаблону, а потім вбиває його. Синтаксис використання команди pkill такий:

pkill <параметри> <шаблон>

Ось деякі з поширених параметрів для поєднання з командою pkill:

OptionDescription-nВибирає лише останні процеси, які відповідають ідентифікатору процесу-uВибирає процеси, що належать певному користувачеві-xВибирає процеси, які точно відповідають шаблону

Це особливо важливо, коли кілька користувачів працюють над різними екземплярами однієї програми в одній системі, і один із екземплярів починає неочікувано поводитися. Наприклад, на наведеному нижче знімку екрана ми вбиваємо екземпляр «gedit», який належить користувачеві «intel», за допомогою команди pkill у Linux:

pkill -u intel gedit

Припиніть процес за допомогою команди killall

Команда killall працює подібно до команди kill, але вона вбиває всі процеси, які відповідають імені процесу, незалежно від користувача. За замовчуванням він надсилає сигнал SIGTERM, якщо не вказано інше. Цікаво зауважити, що команда killall ніколи не може вбити саму себе, але може припинити роботу інших екземплярів команди killall. Синтаксис використання команди killall такий:

killall <параметри> <назва_процесу>

Нижче наведено деякі з варіантів поєднання з командою killall:

OptionDescription-rІнтерпретує ім’я_процесу як шаблон регулярного виразу, а потім вимикає процеси, які відповідають шаблону-uвимиває вказаний процес, що належить зазначеному власнику.-oВимикає вказані процеси, старші (запущені раніше), ніж певний час.-yВимиває вказані процеси молодші ( почався після) певного часу.

Команда killall може бути корисною для завершення серії одного процесу або навіть усіх процесів, що належать певному власнику. У нашому прикладі ми вбиваємо всі процеси «сплячого режиму протягом 500 секунд» за допомогою команди killall у Linux:

killall -v сон

Припиніть процес Linux за допомогою команди top/htop

Цей метод припинення процесів корисний, коли ви не знаєте, які процеси споживають максимальну кількість ресурсів. В обох командах ви можете переміщатися по всіх запущених процесах або навіть зомбі-процесах і швидко завершувати їх. Щоб використовувати верхню команду для моніторингу ваших ресурсів, використовуйте синтаксис у терміналі:

  Як створити резервну копію налаштувань робочого столу Cinnamon на Linux

зверху

Розуміння результату:

Основні результати команди top розділені на стовпці, які:

  • PID – показує ідентифікатор запущеного процесу
  • Користувач – показує власника процесу
  • PR – показує значення пріоритету процесу, яке призначає операційна система
  • NI – показує приємні значення, які схожі на призначення значень із інтервалом користувача для ручного керування пріоритетом завдання.
  • VIRT – показує обсяг віртуальної пам’яті, який використовується процесом.
  • RES – показує обсяг фізичної пам’яті, який використовує процес
  • SHR – показує обсяг пам’яті, який спільно використовують інші процеси
  • S – показує поточний стан процесу, який може бути:
    • D – безперервний сон
    • R – біг
    • S – сплячий
    • Т – зупинено
    • Z – зомбі
  • %CPU – показує обсяг ЦП, який використовується процесом у відсотках
  • %MEM – показує обсяг оперативної пам’яті, який використовується процесом у відсотках
  • TIME+ – показує загальний час виконання процесу
  • Команда – показує, яка команда була викликана для процесу.
  • Якщо ви не знаєте ідентифікатор процесу завдання, яке хочете припинити, переміщуйтесь у списку за допомогою клавіш зі стрілками або знайдіть назву процесу в таблиці процесів у Linux.

    Щоб знайти назву процесу, натисніть «L» на клавіатурі та введіть назву процесу, який потрібно шукати. Коли ви знайдете мерзенний процес, натисніть «k» на клавіатурі, щоб припинити процес. Тепер введіть ідентифікатор процесу або залиште його на поточному виділеному процесі та натисніть «ENTER». Далі введіть сигнал завершення, а потім натисніть «ENTER», щоб припинити роботу програми. Щоб повернутися до терміналу, натисніть «q» на клавіатурі.

    Хоча верхня команда показує такі деталі, як ідентифікатор процесу, споживання пам’яті та багато іншого для всіх запущених процесів, вона не дуже підходить для початківців, оскільки не показує жодних зіставлень ключів або способів їх використання. З іншого боку, команда htop має більш зручний інтерфейс, навіть для інструменту командного рядка. Крім того, він показує всі деталі в окремому вигляді, отже, він не захаращує вікно терміналу. Він не попередньо встановлений у більшості дистрибутивів, і вам потрібно використати таку команду, щоб установити htop у Linux:

    sudo apt install -y htop

    Щоб використовувати htop для керування процесами в Linux, скористайтеся наведеною нижче командою:

    htop

    Щоб припинити програму, перейдіть до назви процесу, який потрібно завершити, натисніть «F9», а потім натисніть Enter. Якщо вам потрібно знайти та закрити будь-яку програму, натисніть «F3» на клавіатурі, введіть назву та натисніть Enter. Ім’я процесу буде виділено, натисніть F9, а потім Enter на клавіатурі, щоб завершити процес.

    Закрийте процес через системний монітор у Linux

    Якщо ви вважаєте, що метод командного рядка для вас складний, ви можете скористатися вбудованим інструментом системного моніторингу, який є в кожному дистрибутиві Linux. Щоб дізнатися, як це працює, відкрийте інструмент моніторингу системи з меню «Програми» та виконайте наведені нижче дії.

      10 найкращих хмарних сховищ Linux для досвідчених користувачів

    1. Коли відкриється інструмент системного моніторингу, ви побачите три вкладки вгорі з назвою — Процеси, Ресурси та Файлова система. Щоб керувати своїми процесами, перейдіть на вкладку «Процеси». Тут ви побачите всі запущені процеси. Натисніть «CTRL+F», щоб знайти назву процесу. Клацніть назву процесу, який потрібно завершити, і натисніть «Завершити процес».

    2. Потім ви отримаєте підтвердження, чи хочете ви завершити процес чи ні. Натисніть на велику червону кнопку «Завершити процес», щоб завершити процес у Linux.

    Питання що часто задаються

    Як зупинити всі процеси в Linux?

    Якщо вам потрібно зупинити всі процеси (окрім оболонки входу, ініціалізації та процесів, пов’язаних із ядром) для конкретного користувача в Linux, скористайтеся командою pkill або командою killall відповідно до синтаксису:

    pkill -u <ім'я користувача>

    killall -u <ім'я користувача>

    Якщо вам потрібно вбити кожен процес для кожного користувача, включаючи систему ініціалізації, натисніть клавіші «ALT + Prt Sc + o» на клавіатурі.

    Чи можна завершити процес?

    Коли ви закриваєте будь-який несуттєвий фоновий процес або процес користувача, який споживає багато системної пам’яті, ви звільняєте ресурси, які тепер можуть використовуватися іншими процесами. Але перш ніж закривати будь-який процес, переконайтеся, що ви не вбиваєте важливий процес операційної системи.

    Які фонові процеси в Linux?

    У Linux фонові процеси — це процеси, які можуть працювати без екземпляра оболонки або будь-якого втручання користувача. Їх можна переглянути за допомогою будь-якої з команд – top, htop, ps тощо.

    Що таке процес зомбі?

    Процес, який був закритий користувачем, але все ще займає пам’ять, відомий як зомбі-процес.

    Що робить CTRL + Z у Linux?

    Коли ви використовуєте CTRL + Z у Linux, він надсилає сигнал SIGTSTP, який призупиняє процес і надсилає його у фоновому режимі. Коли процес перебуває у стані призупинення у фоновому режимі, ви не можете припинити процес, доки він не повернеться на передній план.

    Легко вимикайте процеси в Linux

    Знищення процесів поглинання пам’яті є досить важливим завданням, якому повинен навчитися кожен користувач. У цій статті ми показали як метод командного рядка, включаючи такі команди, як killall і pkill, так і методи GUI для завершення процесів у Linux. Ми навіть детально описали, як використовувати такі популярні інструменти, як top і htop, для керування процесами на вашому ПК з Linux. Якщо у вас виникли проблеми під час використання цих інструментів для припинення процесу, повідомте нам про це в коментарях нижче.