Команда kill в unix

Команда kill в unix

Команда kill в Unix / Linux

Сигнали - програмні переривання. Вони використовуються для зв'язку між процесами в UNIX і UNIX-подібних операційних систем, таких як Linux, Mac OS.

Сигнали використовувалися ще з Bell Labs UNIX в 1970 і сьогодні офіційно визначено стандартом POSIX. Коли сигнал надходить на процес, операційна система перериває нормальний потік виконання процесу і забезпечує повідомлення.

Не має значення, яку операційну систему ви використовуєте, ви безсумнівно зіткнетеся з тим що ваші програми, блокуються і відмовитися працювати належним чином. В Unix, Linux, є команда «kill», яку ви можете використовувати, щоб припинити процес негайно, але і не тільки це, але про це трохи пізніше я розповім. У цій статті «Команда kill в Unix / Linux» я розповім і покажу на готових прикладах різні команди утиліти kill.

Команди kill і сигнали

Коли ви виконуєте команду «kill», ви насправді посилає е сигнал до системи і даєте вказівку розірвати роботу некоректної роботи програми. Існує в загальній складності 60 сигналів, які можна використовувати, але все, що ви дійсно повинні знати, SIGTERM (15) і SIGKILL (9).

Команда kill в unix

kill -l на Debian

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

Основні сигнали

Наступні сигнали є частиною стандарту POSIX. Кожен сигнал макрос, визначений в Файл заголовка. Вони, як правило, скорочено, без їх SIG- префікса; наприклад SIGHUP часто називають просто як HUP.

SIGTERM - Цей сигнал запитує зупинку процесу який працює. Цей сигнал може бути проігнорірован.Процессу дається час, щоб добре вимкнувся. Коли програма добре вимикається, це означає, що їй дано час, щоб врятувати його прогрес і звільнити ресурси. Іншими словами, він не «forced» припинення роботи процесу.

SIGKILL - сигнал SIGKILL змушує процес припинити виконання своєї роботи негайно. Програма не може ігнорувати цей сигнал. Незбережений прогрес буде втрачено.

Синтаксис команди такий:

Особливо корисними сигнали включають HUP, INT, kill, STOP, CONT, і 0.

-s signal_name
Символічне ім'я сигналу, що задає сигнал для відправки сигналу не за замовчуванням.

-l [exit_status]
Якщо операнд не вказано, то показати імена сигналів; В іншому випадку, написати назву сигналу, відповідного exit_status.

-signal_name
Символічне ім'я сигналу, що задає сигнал для відправки в TERM за замовчуванням.

-signal_number
Невід'ємне десяткове ціле, що задає сигнал для відправки в TERM за замовчуванням.

Наступні PID-и, мають особливе значення:
-1 Якщо привілейований користувач, то транслює сигнал всім процесам; в іншому випадку віщає на все процессиbelong-
ing для користувача.

Деякі з найбільш часто використовуваних сигналів:

  • 1 HUP (hang up) - повісити.
  • 2 INT (interrupt) - переривання.
  • 3 QUIT (quit) - вихід.
  • 6 ABRT (abort) - переривання.
  • 9 KILL (non-catchable, non-ignorable kill)
  • 14 ALRM (alarm clock) - будильник.
  • 15 TERM (software termination signal) - Програмне забезпечення для припинення сигналу.

Команда «pkill» дозволяє використовувати розширені шаблони регулярних виразів і інших критеріїв відповідності. Замість того щоб використовувати PID, тепер ви можете вбити додаток, ввівши ім'я процесу. Наприклад, щоб убітьбраузер Firefox. просто запустіть команду:

Xkill є графічним способом «вбити» додаток. При введенні «XKill» в терміналі, курсор миші буде негайно стати «хрест». Все, що вам потрібно зробити, це натиснути «хрест» на тих, що провинилися додаток і він уб'є додаток миттєво. Якщо ви зацікавлені, ви можете додати поєднання клавіш для включення функції XKill.

Ще сигнали які використовуються

Цей сигнал посилає сигнал процесу, щоб перервати операцію. ABRT як правило, спрямований на сам процес, коли він викликає функцію abort () мови програмування С, щоб сигналізувати аварійне завершення, але він може бути направлений з будь-якого процесу, як і будь-який інший сигнал.

SIGALRM, SIGVTALRM і SIGPROF

ALRM, VTALRM і / або сигнал PROF відправляється процесу, коли ліміт часу, вказаний при виконанні функції сигналізації (наприклад, setitimer) закінчується.

Надсилається, коли даний час або годинник з плином часу.

Надсилається, коли процесорний час, що використовується в процесі закінчиться.

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

Сигнал CHLD відправляє процесу, коли дочірній процес завершується, переривається або відновлюється після переривання. Один з поширеного використання сигналу - це дати сигнал ОС на очистку ресурсів, які використовуються в процесі дочірнього процесу після його закінчення без явного системного виклику.

Сигнал CONT інструктує операційну систему, і дає сигнал перезапустити процес який раніше був припинений в режимі СТОП або сигналу TSTP. Однією з важливих особливостей цього сигналу є контроль роботи в оболонці Unix.

Сигнал FPE посилає процесу, коли він виконує помилкове, арифметичні спрацьовування, наприклад, такі як поділ на нуль.

Сигнал HUP посилає процесу, коли його керуючий термінал закритий. Спочатку він був розроблений, щоб повідомити процес після послідовного падіння лінії (HUP відповідальний за «зависання»). У сучасних системах, цей сигнал зазвичай означає, що контроль псевдо або віртуальним терміналом був закритий.

ILL сигнал, що посилається процесу при спробі виконати шкідливі, невідомі або привілейовані команди (інструкції).

Сигнал INT посилає процесу від керуючого терміналу, коли користувач бажає перервати процес. Це як правило, ініціюється натисканням Control-C, але на деяких системах, «delete» або «break».

Сигнал KILL посилає процесу щоб він негайно припинив роботу. На відміну від SIGTERM і SIGINT цей сигнал не може бути захоплений або проігнорований і приймаючий процес не може виконати будь-які очистку після отримання цього сигналу.

Сигнал PIPE надсилається процесу, коли він намагається записати в трубі без процесу, підключеного до іншого кінця.

QUIT сигнал посилається процесу від його керуючого терміналу, коли користувач запитує процес виконання дампа.

Сигнал SEGV відправляється в процес, коли він робить неприпустиму посилання віртуальної пам'яті або збій сегментації, тобто коли він виконує порушення сегментації.

STOP сигнал вказує ОС, щоб зупинити процес для подальшого відновлення.

Сигнал TERM надсилається в процес, щоб запитати дозволу про його припинення. На відміну від сигналу «kill», він може бути і інтерпретується або ігнорованих в процесі. Це дозволяє процесу виконувати «nice» виконання для припинення вивільнення ресурсів і збереження стану в разі потреби. Слід зазначити, що SIGINT майже ідентичний SIGTERM.

Сигнал TSTP надсилається в процес його керуючого терміналу і каже йому, що потрібно тимчасово призупинити. Це зазвичай ініціюється користувачем натисканням Control-Z. На відміну від SIGSTOP, цей процес може зареєструвати обробник сигналу або щоб ігнорувати сигнал.

У TTIN і TTOU сигнали посилаються процесу, коли він намагається прочитати або записати відповідно з (tty) терміналу на задньому плані. Як правило, цей сигнал може бути отриманий тільки за допомогою процесів знаходяться під контролем робочої панелі; демони не мають керуючі термінали і ніколи не повинні отримувати цей сигнал.

Сигнали USR1 і USR2 відправляються процесу і вказують певні користувачем умови.

Сигнал POLL відправляється в процесі, коли відбувається асинхронна подія введення / виведення.

Сигнал SYS відправляється в процесі, коли він пропускає поганий аргумент для системного виклику.

TRAP сигнал посилає процесу коли виникає стан що відладчик просив бути поінформованим - Наприклад, коли конкретна функція виконується або коли змінюється певне значення змінної.

Сигнал URG відправляється процесу, коли socket має термінові або поза діапазону даних, доступних для читання.

Сигнал XCPU відправляється в процесі, коли він використовує центральний процесор протягом часу перевищує певний заданий значення, встановленим користувачем. Прибуття сигналу XCPU забезпечує процесу швидко зберегти всі проміжні результати і завершитися добре, перш ніж він завершитися операційної системи за допомогою сигналу SIGKILL.

Сигнал XFSZ відправляється в процесі, коли файл виростає (перевищує задане значення), ніж максимально допустиме значення.

SIGRTMIN to SIGRTMAX

Сигнали RTMIN - RTMAX призначені для використання в призначених для користувача цілей. Вони сигнали реального часу.

різні сигнали

Наступні сигнали не стандартизовані POSIX, але іноді використовуються на деяких системах.

Сигнал ЕМТ відправляється в процесі, коли відбувається переривання емулятора.

Сигнал INFO відправляється в процесі, коли запит статусу отриманий від керуючого терміналу.

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

LOST сигнал посилається до процесу, коли «file lock» втрачається.

Сигнал WINCH відправляється в процесі, коли його керуючий термінал змінює свій розмір.

Відправлення сигналів з клавіатури

Сигнали можуть бути відправлені з клавіатури. Кілька стандартних значень за замовчуванням перераховані нижче. За замовчуванням поєднання клавіш для відправки сигналів переривання може бути визначений за допомогою команди stty.

Надіслати SIGINT (переривання). За замовчуванням це викликає процес припиняється.

Надіслати SIGTSTP (Suspend). За замовчуванням це викликає процес призупинити всі операції.

Надіслати SIGQUIT (Quit). За замовчуванням це викликає процес припинити негайно і скинути ядро.

Надіслати SIGINFO (INFO). За замовчуванням це змушує операційну систему відображати інформацію про команду. Чи не підтримується на всіх системах.

Коли додатки поводяться неправильно і викликали до зависання системи, це дуже заманливо, щоб перезавантажити комп'ютер і почати сеанс знову і знову. За допомогою цих команд «kill», ви зможете краще керувати поганою поведінкою додатків які викликають або можуть викликати крах системи. На цьому, я завершую цю тему «Команда kill в Unix / Linux».