Чи є різниця між
kill -9 212121
і
kill 212121
Чи є різниця між
kill -9 212121
і
kill 212121
Відповіді:
Сторінка Ubuntu man kill
пояснює призначення -9
комутатора (правда, досить спритно):
Name Num Action Description
KILL 9 exit cannot be blocked
Ось що говорить інша сторінка чоловіка
Команда
kill
посилає зазначений сигнал вказаному процесу або групі процесів. Якщо сигнал не вказаний,TERM
сигнал надсилається.TERM
Сигнал буде вбивати процеси , які не впіймати цей сигнал. Для інших процесів може знадобитися використання сигналуKILL
(9
), оскільки цей сигнал неможливо перехопити.
Тому використання -9
перемикача гарантує, що процес ефективно загине. Навіть незважаючи на те, що заморожений або невідповідний процес може не реагувати на простий TERM
сигнал, він загине при надсиланні KILL
сигналу.
Команда kill посилає визначений сигнал процесу з заданою ідентичністю (PID):
kill -<signal> <pid>
Звичайно, ми можемо вбивати лише процеси, якими ми володіємо, тоді як root може вбивати всі процеси. Дивіться у Вікіпедії, щоб отримати хороший підсумок обчислювальних сигналів.
Сигнали kill
можуть відправити перераховані в сторінках керівництва . Сигнал може бути представлений назвою або номером. Якщо сигнал не подано, сигнал за замовчуванням 15, відповідно. TERM
використовується.
Тому всі три команди нижче однакові:
kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234
Різниця між SIGTERM
та SIGKILL
полягає у тому, як програма може діяти на сигнал:
TERM
: додаток зможе завершити роботу, тобто належним чином виконати процедуру відключення. KILL
: програми зупиняються та вбиваються негайно (що може призвести до втрати даних або збільшення можливості повідомляти про передбачуваний збій у деяких випадках).Зауважте, що всі наступні є синонімами:
kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234
Варто зазначити, що у світі обробки сигналів SIGKILL - один з небагатьох унікальних, якими керує операційна система, а не програма. Під час запуску kill -9
ви не говорите програмі самозавершуватися, а наказуєте ОС припинити запуск програми, незалежно від того, що вона робить.
Після відправлення SIGKILL програма буде негайно зупинена. Якщо будь-які дзвінки ядра виконуються (наприклад, файл IO) від імені програми, ці дзвінки можуть продовжуватися, а не можуть продовжуватися, доки вони не завершаться, залежно від виклику, але сама програма більше не буде виконуватись. Зауважте, що простежені завдання чи завдання, що працюють під налагоджувачем, тут можуть вести себе по-різному.
Інший сигнал, який неможливо заблокувати, - це SIGSTOP, який має подібний ефект, але замість цього заморожує програму; ви можете надіслати SIGCONT пізніше, щоб відновити його. Така поведінка повністю контролюється ОС, і програма не отримує попереднього повідомлення.
Всі інші сигнали надсилаються програмі; він може обробляти їх, що завгодно, або якщо він ігнорує сигнал, то виконується поведінка за замовчуванням.
Ось декілька корисних сигналів, які можуть виявити вас надсиланням до процесу:
kill
і killall
. cat /etc/passwd | head -n1
буде відправлено SIGPIPE в cat
процес після друку першого рядка, що призведе cat
до припинення, перш ніж закінчити весь файл.Хоча всі ці сигнали відбуваються "природним шляхом" у власних налаштуваннях, ви можете використовувати сигнал для підробки умови для досягнення бажаного результату.
Наприклад, якщо ви хочете припинити чийсь сеанс SSH, ви можете просто вбити процес, але тим самим ви запобіжете оновити його файл ІСТОРІЯ, що може бути важливим з міркувань безпеки. Але замість цього, якщо ви надішлете його SIGHUP , процес припустить, що з'єднання загинуло, і він виконає стандартне очищення.
SIGQUIT
, де типовою дією є скидання ядра та завершення. Це можна використовувати, якщо програма робить щось дуже неправильно, вам потрібно негайно зупинити це, і ви хочете мати можливість налагодити це пізніше.
kill -9 Значення: процес буде вбитий ядром; цей сигнал не можна ігнорувати. 9 означає сигнал Вбивства, який не підлягає вловленню або ігноруванню
Використання: SIGKILL поодинокі
Значення вбивства : Команда kill без жодного сигналу передає сигнал 15, який припиняє процес нормальним способом.
Використання: сигнал SIGTERM , яким можуть управляти програмісти
kill -9