Завершити процес в linux - команди ps, kill і killall

Як би там не було, але деякі програми в Linux іноді зависають. При цьому бувають ситуації, коли додаток взагалі не відгукується, або працює так повільно, що коректно завершити його роботу не представляється можливим. Щоб оперативно вийти з отриманої ситуації можна «вбити» даний процес. Для цьог іспользуеются команди kill і killall. Зараз ми розберемося як використовуватися ці команди, знаходити PID процесу і посилати сигнал SIGKILL.
Щоб уникнути путаціни, домовимося під процесом розуміти запущену в систему програму. Наприклад, якщо у вас запушено кілька вікон браузера Mozilla Firefox - це значить, що запущено три процесу.
Визначити PID процесу - команда pidof
PID - унікальний ідентифікатор процесу в системі Linux. Щоб коректно виконати зупинку процесу спочатку варто визначити його PID. Для цього використовуються команди ps і grep. У свою чергу команда ps призначена для виведення списку активних процесів в системі та інформації про них. Команда grep запускається одночасно з ps (в каналі) і буде виконувати пошук за результатами команди ps. Вивести список всіх процесів можна, виконавши в командному рядку:
Зрозуміло, PID можна визначити і через top. Але в більшості випадків кількість процесів занадто велике (і динамічно змінюється в top), тому швидко і правильно визначити PID не так вже й просто. Якраз для цього використовується команда grep. Наприклад, для завершення процесу браузера Google Chrome необхідно виконати наступну команду:
ps axu | grep chrome
У нашому випадку 20474 і є шуканий PID. Ще простіше - використовувати команду pidof. при цьому необхідно вказувати ім'я процесу. наприклад:
] $ Pidof chrome
20728 20706 20668 20647 20586 20574 20553 20508 20474
Завершити процес в Linux - команди kill і killall
Завершити процес в операційній системі Linux. знаючи його PID, можна командою kill. Варто знати і розуміти: команда kill призначена для посилки сигналу процесу. За замовчуванням, якщо ми не вказуємо який сигнал посилати, надсилається сигнал SIGTERM (від слова termination - завершення). SIGTERM вказує процесу на те, що необхідно завершитися. Кожен сигнал має свій номер. SIGTERM має номер 15. Список всіх сигналів (і їх номерів), які може послати команда kill, можна вивести, виконавши kill -l. Щоб послати сигнал SIGKILL (він має номер 9) процесу 2811, виконайте в командою рядку:
При цьому, сигнал SIGTERM може і не зупинити процес (наприклад, при перехопленні або блокування сигналу), SIGKILL ж виконує знищення процесу завжди, так як його не можна перехопити або проігнорувати.
Команда killall в Linux призначена для «вбивства» всіх процесів, що мають одне і те ж ім'я. Це зручно, так як нам не потрібно знати PID процесу. Наприклад, ми хочемо закрити всі процеси з ім'ям chrome. Виконайте в терміналі:
Команда killall, також як і kill, за замовчуванням шле сигнал SIGTERM. Щоб здійснити інший сигнал потрібно скористатися опцією -s. наприклад:
killall -s 9 chrome