Здравствуйте!Задача:
Необходимо написать скрипт-демон, который загружается при загрузке ОС и фиксирует причину завершения работы ОС (shutdown/reboot/crash).
Вопрос:
Каким образом, при получении сигнала SIGTERM, от init, узнать что СОБИРАЕТСЯ сделать система выключиться либо перезагрузиться?
Условия:
а) ОС - GNU/Linux - Gentoo
б) т.к. не желательно, чтобы скрипт был дистрибутивно зависим, прошу не советовать создавать дополнительные /etc/runlevels
в) cкрипт пишется на PerlПожалуйста, подскажите ответ на мой вопрос.
Спасибо, за Ваше время!
IMHO простейший вариант - написать шкрипт системы инициализации.
Тем самым поймаются все события переключения между уровнями исполнения.Пока что за редким исключением (основное - Solaris) почти любая
UNIX/Linux система использует System V - подобную систему
инициализации, так что подход почти универсальный.К сожалению (IMHO, конечно), последнее время возникла мода на событийно
управляемую модель инициализации. Стандарта на неё нет, каждый лабает
в меру собственного соображения и воображения - поэтому унификация
в данном вопросе постепенно теряется.
>Каким образом, при получении сигнала SIGTERM, от init, узнать что СОБИРАЕТСЯ сделать
>система выключиться либо перезагрузиться?Копай в сторону who -r
run-level 0 = shutdown,
6 = reboot.Учти, что на run-level 1 совать свою шнягу крайне нежелательно. SIGTERM получишь, а что дальше будет - одному root'у известно.