Чи є різниця між
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