On 24/09/2023 20:29, Andrey Jr. Melnikov wrote:
Поздравляю, ты придумал init в софтине для UPS. Теперь все остальные должны
знать про неё - а она должна знать про всё остальное.

Нет. Я увидел сожаление, что такой хороший интерфейс, как SIGPWR не расширяют. Мне кажется это странным, если можно запускать в зависимости от события один из скриптов или скрипт с параметром, который зависит от события. Решение, что именно делать, принимается вне init (который процесс PID 1). А скрипт, который позовет демон UPS, вполне может останавливать и запускать сервисы, менять runlevel, то есть использовать инфраструктуру SysV init. SIGPWR и дополнительные сигналы при этом не нужны.

Я сейчас глянул
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 и скриптам.

Ответить