
KTNI_Kozlov_otvety / 44
.doc44. Системные процессы. Понятие сигнала. Перечислите известные Вам сигналы. Команды kill и pkill.
Управление процессами осуществляется при помощи сигналов. Сигнал – сообщение, несущее определенный номер. Linux использует сигналы для сообщения о прерываниях, сгенерированных пользователем, а также о неправильных системных вызовах, нарушенных конвейерах, неверных инструкциях и других условиях. Сигналы позволяют воздействовать на процессы, выполняющиеся в системе, он посылает процессу информацию о том, что произошло новое событие, на которое процесс должен прореагировать. Например, при нажатии комбинации клавиш Control-C процессу отправляется стоп-сигнал, по которому он должен завершить свою работу. Процесс считывает номер сигнала и в зависимости от номера реагирует определенным образом.
Таблица 11 – Перечень некоторых сигналов.
Тип |
Имя |
Номер |
Генерирующее условие |
Отсутствие сигнала |
|
0 |
Выход по команде exit или при достижении конца программы. |
Разрыв |
SIGHUP |
1 |
Разрыв линии. |
Прерывание терминала |
SIGIN |
2 |
Нажатие клавиши прерывания (например, Ctrl-C). |
Прекращение |
SIGQUIT |
3 |
Нажатие клавиши прекращения (обычно, Ctrl-Shift-\ или Ctrl-Shift-|). |
Уничтожение |
SIGKILL |
9 |
Самый сильный сигнал для процесса. Применять в крайнем случае. |
Завершение программы |
SIGTERM |
15 |
Сигнал воздействия на процесс по умолчанию. |
Стоп |
SIGTSTP |
20 |
Нажатие клавиши приостановки (обычно Ctrl-Z). |
Команды kill и pkill. Снятие процессов осуществляется с помощью команды kill совместно с использованием номера сигнала. При этом обычно с kill используются два основных сигнала: 15 (используется по умолчанию) и 9 (уничтожением процесса). Старайтесь не применять 9 сигнал, т.к. завершение процесса с 9 сигналом иногда может привести к непредсказуемым последствиям. Сигнал 9, действую на процесс, приводит к незамедлительному завершению последнего. Например, если вы записываете диск и уничтожаете этот процесс 9 сигналом, вы можете повредить как сам диск, так и устройство CD-ROM. Или завершая процесс печати большого документа, вы можете повредить печатающее устройство. Или завершая сеанс работы с компьютером путем уничтожения соответствующего процесса во время архивирования большого массива данных, вы можете повредить жесткий диск и так далее. В следующем примере с помощью команды kill завершим работу демона lpsched по его PID.
Можно завершить работу процесса по его названию с помощью команды pkill: