Re: devuan

Max Nikulin <[email protected]> Wed, 27 Sep 2023 17:37:18 +0700
Newsgroups gmane.linux.debian.user.russian
Message-ID <[email protected]>
On 26/09/2023 14:19, Andrey Jr. Melnikov wrote:
> Max Nikulin wrote:
>
>> https://manpages.debian.org/bookworm/sysvinit-core/init.8.en.html#CHANGING_RUNLEVELS
>> я перестал понимать, куда его дальше-то расширять? Вроде наоборот хотят
>> сузить, выкинув /etc/powerstatus, по которому определяется, какой из 3
>> скриптов запускать по SIGPWR
> Даа, читал ты его явно по диагонали.

Тем не менее единственное новое, что я увидел в пересказе, - это 
/var/run/powerstatus, что не особенно принципиально (из разряда мелочь, 
но приятно).

>>> L(OW)
>>>      The power is failing and the UPS has a low battery. Execute the
>>>      powerfailnow entries.
>> Я не в восторге от такого решения, но и предлагавшиеся 3 сигнала, с моей
>> точки зрения, не лучше.
> Т.е. с твоей точки зраения один signal(1, SIGRTMIN+x) хуже чем вся эта
> пляска вокруг файликов с сигналами и FIFO?

Я думаю, мы ни до чего не договоримся, да и не важно, ведь ни на что это 
не повлияет.

Да, у меня прямо противоположное мнение о том, какой интерфейс лучше 
подходит. Перенумеровать все возможные события - затея гиблая, люди в 
них начнут путаться. Надо ведь еще и имена им дать. Поэтому я против 3-х 
сигналов.

Я думаю, что когда люди выбрали один SIGPWR + /etc/powerstatus, они 
рассматривали 3 сигнала и остановились на варианте, который сейчас 
выглядит несколько вычурным.

Послать-то сигнал может и просто, а вот правильно поймать уже некоторое 
искусство. Чинить обработчики сигналов - трудоемкий процесс. За это я 
сигналы не люблю.

С сокетами проще. Если есть утилита и библиотека, которые могут слать 
нужные сообщения, и процесс их может правильно обработать, то это лучше, 
чем сигналы. Мне такой вариант нравится больше.

А вообще, можно и полностью избавить init от кода, специфичного для 
обработки событий питания. Все равно это сводится к более общему и 
универсальному интерфейсу "запустить команду с параметрами". Вот пусть 
демон UPS и просит выполнить один из вариантов "powerfail start", 
"powerfail now", "powerfail stop" (ну или что-то похожее) прямым текстом 
без эфвемизмов вроде нумерованных сигналов.

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

Я бы еще понял ругань, что в systemd отломали старые интерфейсы. С 
ininctl вообще какой-то абсурд. Он сообщения понимает, но просто плюется 
в логи, что обновляйте свой UPS.

Cигналов в systemd как раз выше крыши:

On 19/09/2023 14:00, Andrey Jr. Melnikov wrote:
> Да, задизайнить
> SIGRTMIN+4 в poweroff и SIGRTMIN+14 в immediate poweroff - смог

Ну вот 2 сигнала уже есть. Точнее там другая интерпретация SIGPWR: 
готовьтесь, питание может кончится, а запускаемые скрипты уже могут 
что-то делать, хоть тот же powerstatus читать.

Если питание вернулось, то для этого есть

SIGRTMIN+0
   Enters default mode, starts the default.target unit.
   This is mostly equivalent to systemctl isolate default.target.

Ну просто мечта любителя сигналов.