Max Nikulin <maniku...@gmail.com> wrote: > On 24/09/2023 20:29, Andrey Jr. Melnikov wrote: > > Поздравляю, ты придумал init в софтине для UPS. Теперь все остальные должны > > знать про неё - а она должна знать про всё остальное.
> Нет. Я увидел сожаление, что такой хороший интерфейс, как SIGPWR не > расширяют. Мне кажется это странным, если можно запускать в зависимости > от события один из скриптов или скрипт с параметром, который зависит от > события. Решение, что именно делать, принимается вне init (который > процесс PID 1). А скрипт, который позовет демон UPS, вполне может > останавливать и запускать сервисы, менять runlevel, то есть использовать > инфраструктуру SysV init. SIGPWR и дополнительные сигналы при этом не нужны. Вот SIGPWR - это и есть изменение runlevel'а. Только сигналом - а не telinit или shutdown. И не надо изоброжать из себя init - для этого он уже есть. Это его задача - знать, как запустить или остановить всё то, что а) запущено здесь и сейчас, б) прописано в target/скриптике/rc.pf.d/где-то-там-еще. > Я сейчас глянул > https://manpages.debian.org/bookworm/sysvinit-core/init.8.en.html#CHANGING_RUNLEVELS > > Usage of SIGPWR and /etc/powerstatus is discouraged. Someone wanting to > > interact with init should use the /run/initctl control channel - see the > > initctl(5) manual page for more documentation about this. > То есть даже в SysV init сигнал решили закопать. Что меня смутило, так > это то, что initctl нашелся только в finit. Осталась некоторая > неопределенность, что именно решили сделать в SysV init, но вроде как > раз речь о том, что процессу init (PID 1) не нужно знать, что там с > питанием, это можно делегировать демону UPS и скриптам. Это отдельный подвид альтернативно одарённых. Мало ли, что они там не рекомендуют - интерфейс есть, и доступен без знаний "какой там magic надо послать в /run/initctl в каком-то-там namespace". Да и сами они не удосужились написать в свой-же telinit поддержку своего-же INIT_CMD_(POWERFAIL|POWERFAILNOW|POWEROK). Это всё показатель того, что эта часть вообще никому не нужна. Все теперь стоят в DC сертифицированных по Tier-III, где проблемы с электропитанием решаются оборудованием DC, а получить состояние питания - невозможно в принципе. А на процент пользователей с домашним UPS - наплевать, они и сами себе запилят что надо и как надо.