Max Nikulin <maniku...@gmail.com> wrote:
> On 19/09/2023 14:00, Andrey Jr. Melnikov wrote:
> > Я бы понял, если бы он сделал 3
> > сигнала SIGPWR для информирования о том, что питание пропало, SIGRTMIN+x1
> > для информирования о том, что питание появилось обратно и SIGRTMIN+x2 - для
> > emergency power shutdown - был бы разговор о прогрессе и удобстве.

> Лично у меня сомнения, что этим должен заниматься именно init. 
init должен запускать просто нужный target/script/runlevel/чётамещё. 

> Вроде задача для пользовательского процесса, который сходит спросит, сколько 
> заряда осталось у аккумулятора, а потом уже будет решать, на сколько 
> спешно надо останавливать систему. В ноутбуках акселерометры, по которым 
> можно парковать головки жесткого диска при падении, доступны просто как 
> файлы в /sys.
Диск сам запаркуется. Он тупо ближе к акселерометру и быстрее. 

> Реакция на событие нужна за доли секунды, а init для этого не обязателен.
Он для этого и не нужен. init и обработка realtime сигналов - это из области
фантастики. особенно с systemd который обязательно захочет послать сигнал
через dbus текущей парковалке головок диска.

> Не убедительно, что сообщать о пропадании/восстановлении питания надо 
> именно разными сигналами.
Для ноутбука - может и не убедительно, а для удалённого UPS, который где-то
там по сети висит и по SNMP мониториться - ещё как убедительно. 

Вот и смотри - есть демон, который мониторит сосотяние UPS'a - пропало
питание - посылает сигнал, появилось - посылает сигнал (ну тут всё
стандартно, так уже лет 40 делают). Просто удобнее, когда у тебя есть
понимание - init дернул power-loss скриптик, в котором уже можно оценить
масштаб проблемы, остановить нужное и принять решение - ждём восстановления
или отключаемся. Или init дернул power-restored - когда поднимаем
остановленное или в зависимости от - тупо перезагружаемся.
Нет, через один SIGPWR это тоже всё решалось и решается, только вот скриптик
будет разляпистее.

Ответить