Як вбити процес linux

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

У цій статті ми розглянемо кілька найпоширеніших способів завершити процес Linux. Опишемо детально як відбувається зупинка процесу і як все зробити правильно.

Як відбувається завершення процесу?

Управління процесами в операційній системі Linux здійснюється за допомогою сигналів. У тому числі і завершення будь-якого процесу. Сигнали передає система, але також їх може передавати користувач за допомогою спеціальних команд або навіть поєднань клавіш в терміналі. Коли процесу приходить сигнал про необхідність завершитися, він повинен виконати деякі підготовчі дії.

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

  • SIGINT - найбезпечніший сигнал завершення, означає Interrupt. Він відправляється процесу, запущеного з терміналу за допомогою поєднання клавіш Ctrl + C. Процес правильно завершує всі свої дії і повертає управління;
  • SIGQUIT - це ще один сигнал, який відправляється за допомогою поєднання клавіш, програмою, запущеної в терміналі. Він повідомляє їй що потрібно завершитися і програма може виконати коректне завершення або проігнорувати сигнал. На відміну від попереднього, вона генерує дамп пам`яті. Поєднання клавіш Ctrl + /;
  • SIGHUP - повідомляє процесу, що з`єднання з керуючим терміналом розірвано, відправляється, в основному, системою при розриві з`єднання з інтернетом;
  • SIGTERM - негайно завершує процес, але обробляється програмою, тому дозволяє їй завершити дочірні процеси і звільнити всі ресурси;
  • SIGKILL - теж негайно завершує процес, але, на відміну від попереднього варіанту, він не передається самого процесу, а обробляється ядром. Тому ресурси і дочірні процеси залишаються занедбаними.

Важливо розуміти, що потрібно дати процесу можливість завершитися коректно. Бажано, щоб порти і сокети були звільнені, закриті і видалені тимчасові файли. Тому ніколи не передавайте відразу SIGKILL. Передавайте сигнали завершення в послідовності, як вони перераховані вище.

спочатку Ctrl + C, якщо це можливо, потім SIGTERM - він хоч і завершує процес, але робить цю культурно, і тільки в крайньому випадку SIGKILL. А тепер розглянемо як вбити процес по pid Linux на практиці. Якщо ви завжди використовуєте SIGKILL, тоді на думку спадає така картинка:

Як вбити процес Linux?




Для передачі сигналів процесам в Linux використовується утиліта kill. Її синтаксис дуже простий:

$ kill -сигнал pid_процесса

Сигнал є один з вище перерахованих сигналів для завершення процесу. За замовчуванням, якщо цей параметр не вказано, використовується сигнал SIGTERM, що є дуже правильно. Також нам потрібно вказати який процес потрібно завершити. Для цього використовується унікальний ідентифікатор процесу - PID.

Припустимо, у нас виконується утиліта ping. Ми хочемо її завершити за допомогою kill. Тоді, спочатку ми дізнаємося її ідентифікатор за допомогою команди ps:

$ Kill 20446


або:

$ Kill -KILL 20446

Тепер знову перевіряємо:

Якщо процес запущений від суперкористувача, то, природно, вам потрібно використовувати sudo. Не завжди зручно знищувати процес по його PID, як мінімум, тому, що вам цей PID потрібно ще дізнатися. Ми могли б нагородити складних конструкцій з використанням xargs, щоб обчислювати автоматично pid на ім`я процесу і відразу ж його завершувати, але в цьому немає необхідності. Вже існують спеціальні утиліти.

Як завершити процес за допомогою pkill

Утиліта pkill - це оболонка для kill, вона поводиться точно так само, і має той же синтаксис, тільки в якості ідентифікатора процесу їй потрібно передати його ім`я. Утиліта сканує директорію proc і знаходить PID першого процесу з таким ім`ям, потім відправляє йому SIGTERM. Таким чином, ви можете вбити процес по імені Linux. Наприклад, якщо ми хочемо завершити той же ping:

Відео: How To Kill A Process In Linux

$ Pkill -TERM ping

Замість ps, ви можете використовувати утиліту pgrep для пошуку pid процесу, переконаємося що наша програма завершена:

Відео: how to kill process in Unix

$ Killall ping

Як бачите, запущено кілька процесів, залишилося зупинити процес Linux за допомогою killall:

Команда завершить всі запущені утиліти ping, ви можете переконатися в цьому ще раз виконавши pgrep:

Поділися в соціальних мережах:

Схожі
Як приховати процес в linuxЯк приховати процес в linux
Список процесів linuxСписок процесів linux
Віртуальна флешка в linuxВіртуальна флешка в linux
Процес завантаження linuxПроцес завантаження linux
Linux біблія користувача 9 виданняLinux біблія користувача 9 видання
Як встановлювати bin файли в linuxЯк встановлювати bin файли в linux
Установка kali linux на комп`ютерУстановка kali linux на комп`ютер
Opera для linuxOpera для linux
Команда taskkill - завершити процес.Команда taskkill - завершити процес.
Chakra linux отримала kde plasma 5.7.3 і firefox 48Chakra linux отримала kde plasma 5.7.3 і firefox 48
» » Як вбити процес linux