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 - наплевать, они и сами
себе запилят что надо и как надо.

Ответить