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 это тоже всё решалось и решается, только вот скриптик будет разляпистее.