Книга: Linux-сервер своими руками
19.7.9. Обработка сигналов и протоколирование
19.7.9. Обработка сигналов и протоколирование
Возможно, вы хотите обеспечить выполнение вашего сценария после выхода пользователя из интерпретатора или выполнить какие-нибудь действия при отключении удаленного пользователя от системы. «Перехватить» сигнал (прерывание) можно с помощью команды trap. Формат команды trap следующий:
trap имя сигналы
где: имя — это имя функции или набор команд, которые должны быть выполнены при получении сигнала;
сигналы — наиболее часто используется перехват сигналов, описанных в табл. 19.42. Полный список сигналов вы найдете в гл. 5.
Сигналы Таблица 19.42
Номер | Название | Описание |
---|---|---|
01 | SIGHUP | Освобождение линии (hangup) |
02 | SIGINT | Прерывание (interrupt) |
03 | SIGQUIT | Выход (quit) |
09 | SIGKILL | Уничтожение процесса (kill). He перехватывается и не игнорируется |
15 | SIGTERM | Программный сигнал завершения |
Пример. Игнорирование сигналов 1, 2, 3, 15
trap : 1 2 3 15
: — это пустой оператор, не выполняющий никаких действий.
Рассмотрим, как можно протоколировать работу собственного сценария. Для этого существуют два способа – с помощью команды tee и команды script.
Способ 1:
$LOGFILE=my_log
if ["$LOGGING" != "true"] then export LOGGING="true"; exec $0 I tee $LOGFILE; fi
Способ 2:
$LOGFILE=my_log
if ["$LOGGING" != "true"]; then export LOGGING="true"; exec script $0 $LOGFILE; fi
В первом случае мы устанавливаем флаг протоколирования LOGGING и заново запускаем наш сценарий. При этом перенаправляем весь стандартный вывод команде tee, которая выполнит протоколирование. Второй способ аналогичен первому за исключением того, что мы не будем самостоятельно запускать сценарий — это за нас выполнит команда script. Оба способа можно использовать для протоколирования работы других программ:
script program ~/program.log
- 10.4. Обработчики сигналов в действии
- Флаги Международного свода сигналов
- 12.1. Концепция сигналов
- Протоколирование запрошенных ссылок (URL)
- Глава 12 Обработка сигналов
- Обработка перехваченных ошибок
- 5.4 Команда trap: обработка прерываний
- 15.3. Обработка изображений при помощи RMagick
- 7.4. Аналоговые перемножители сигналов
- 15.1.3. Обработка сигналов управления заданиями
- ГЛАВА 4 Обработка исключений
- Обработка запросов с помощью PHP