<Попередній | зміст | Наступна>
Надсилання сигналів до процесів за допомогою kill
Команда вбивати Команда використовується для відправки сигналів програмам. Його найпоширеніший синтаксис виглядає так:
вбити [-сигналізувати] PID...
вбити [-сигналізувати] PID...
Якщо в командному рядку не вказано сигнал, то ТЕРМІН Сигнал (завершити) надсилається за замовчуванням. The вбивати Команда найчастіше використовується для надсилання таких сигналів:
Таблиця 10-4: Загальні сигнали
Номер | ІМ'Я | Сенс |
1 | HUP | Повісити. Це пережиток старих добрих часів, коли термінали підключали до пульта |
комп'ютери з телефонними лініями та модемами. Сигнал використовується для вказівки програмам на те, що керуючий термінал «повісив трубку». Ефект цього сигналу можна продемонструвати, закривши термінальний сеанс. Програма переднього плану, що виконується на терміналі, буде надіслана сигнал і завершиться. | ||
Цей сигнал також використовується багатьма програмами-демонами для повторної ініціалізації. Це означає, що коли демону буде надіслано цей сигнал, він перезапуститься та повторно прочитає свій конфігураційний файл. Веб-сервер Apache є прикладом демона, який використовує HUP сигналізувати таким чином. | ||
2 | INT | Переривати. Виконує ту ж функцію, що і Ctrl-c ключ, надісланий з терміналу. Зазвичай це завершує програму. |
9 | Вбити | Вбити. Цей сигнал особливий. У той час як програми можуть обробляти сигнали, надіслані їм різними способами, включаючи ігнорування їх усіх разом, Вбити Сигнал насправді ніколи не надсилається цільовій програмі. Швидше, ядро негайно припиняє процес. Коли процес завершується таким чином, йому не дається можливість «прибрати» за собою чи зберегти свою роботу. З цієї причини Вбити Сигнал слід використовувати лише в крайньому випадку, коли інші сигнали завершення виходять з ладу. |
15 | ТЕРМІН | Припинити. Це сигнал за замовчуванням, надісланий вбивати команда. Якщо програма все ще достатньо «жива» для отримання сигналів, вона завершиться. |
18 | КОНТУР | Продовжуйте. Це відновить процес після a СТОП сигнал. |
19 | СТОП | Стій. Цей сигнал викликає призупинення процесу без завершення. Як і Вбити сигнал, він не надсилається цільовому процесу, тому його не можна ігнорувати. |
Давайте спробуємо вбивати команда:
[me@linuxbox ~]$ xlogo &
[1] 13546
[me@linuxbox ~]$ kill -1 13546
[1]+ Відключення xlogo
[me@linuxbox ~]$ xlogo &
[1] 13546
[me@linuxbox ~]$ kill -1 13546
[1]+ Відключення xlogo
У цьому прикладі ми починаємо xlogo програму у фоновому режимі, а потім надішліть її a HUP сигнал с вбивати, xlogo Програма завершується, і оболонка вказує, що фоновий процес отримав сигнал зависання. Можливо, нам доведеться натиснути клавішу Enter кілька разів, перш ніж з’явиться повідомлення. Зверніть увагу, що сигнали можуть бути вказані або за номером, або за назвою, включаючи назву з префіксом «SIG»:
[me@linuxbox ~]$ xlogo &
[1] 13601
[me@linuxbox ~]$ вбити -INT 13601 [1]+ Переривання xlogo [me@linuxbox ~]$ xlogo &
[1] 13608
[me@linuxbox ~]$ вбити -SIGINT 13608
[1]+ Переривання xlogo
[me@linuxbox ~]$ xlogo &
[1] 13601
[me@linuxbox ~]$ вбити -INT 13601 [1]+ Переривання xlogo [me@linuxbox ~]$ xlogo &
[1] 13608
[me@linuxbox ~]$ вбити -SIGINT 13608
[1]+ Переривання xlogo
Повторіть наведений вище приклад і спробуйте інші сигнали. Пам’ятайте, що ми також можемо використовувати специфікації завдання замість PID.
Процеси, як і файли, мають власників, і ви повинні бути власником процесу (або суперкористувачем), щоб надсилати йому сигнали за допомогою вбивати.
На додаток до переліку сигналів вище, які найчастіше використовуються с вбивати, існують інші сигнали, які часто використовуються системою. Ось список інших поширених сигналів:
Таблиця 10-5: Інші поширені сигнали
Номер | ІМ'Я | Сенс |
3 | ВИХІД | Вийдіть. |
11 | SEGV | Порушення сегментації. Цей сигнал надсилається, якщо програма незаконно використовує пам’ять, тобто намагається записати кудись не дозволено. |
20 | TSTP | Зупинка термінала. Це сигнал, надісланий терміналом, коли Ctrl-z натиснута клавіша. На відміну від СТОП сигнал, TSTP сигнал приймається |
програму, але програма може ігнорувати її.
28 ЛЕБІДКА Зміна вікон. Це сигнал, надісланий
система, коли вікно змінює розмір. Деякі програми, як топ та менше буде реагувати на цей сигнал, перемалювавши себе, щоб відповідати новим розмірам вікна.
Для допитливих, повний список сигналів можна побачити за допомогою такої команди:
[me@linuxbox ~]$ kill -l
[me@linuxbox ~]$ kill -l