EG>>> Я разве не упоминал в этом треде, что про штатное и дефолтное EG>>> поведение apcupsd не стоит даже думать, потому как оно заточено EG>>> под Linux? VS>> А зачем же мейнтейнеры порта заточили его как под линукс?
EG> Это вопрос к маинтенеру, но думаю, что они ничего не затачивали, EG> тупо не заморачивались.
Может я когда-нибудь напишу PR с предложениями, но сперва надо самому понять логику.
EG>>>>> Я, правда, предпочитаю просто обозвать скрипт 000.something, EG>>>>> чтобы он в обратном порядке гашения получился раньше. EG>>>>> Можно ещё в стартовый скрипт бихайва добавить зависимость от EG>>>>> 000.something, чтобы при загрузке у него порядок был позже, а EG>>>>> при выключении раньше. Полно вариантов. VS>>>> А штатный для rcNG является какой вариант обязательного запуска VS>>>> скрипта последним? EG>>> По-моему, такого и быть не может в такой формулировке: если ты EG>>> сделаешь два "последних" скрипта, который из них реально будет EG>>> последним? :-) VS>> Ты такие вопросы задаешь :-) Hо современная система VS>> startup/shutdown скриптов могла бы предусматривать какие-то VS>> milestones, типа "эти скрипты запускать непосредственно перед VS>> выключением". Даже по-моему в SysV init была какая-то возможно VS>> это сделать, был уровень предусмотрен.
EG> Hу вот ниже, SERVERS для этого подходит:
EG> # REQUIRE: mountcritremote abi ldconfig savecore watchdogd EG> # This is a dummy dependency, for early-start servers relying on EG> # some basic configuration.
EG>>> Я бы просто сделал скрипт с REQUIRE: SERVERS и назвал его EG>>> 000.something.
EG> В "прямом" порядке такой скрипт будет одним из первых при загрузке, EG> считай сразу после ldconfig, а в обратном - одним из самых последних.
Наверное можно и так, но я при изучении /etc/rc.d нашел /etc/rc.shutdown.local. По-моему он ближе к задаче.
А моя вот эта идея:
VS> Я тут подумал и решил, что поступлю тупо: в VS> /usr/local/etc/apcupsd/apccontrol в процедуру doshutdown добавлю VS> "service vm stop" перед${SHUTDOWN}, и пусть сперва выключаются VS> виртуалки сколько им надо, а потом уже вся система.
не работает, т.к. apcupsd сперва посылает упсу сигнал выключить питание, и потом уже запускает doshutdown.
Но я не сдался и придумал новый вариант, и сегодня даже проверил его. В rc.conf.local пишем apcupsd_flags="--term-on-powerfail"
А в /etc/rc.shutdown.local вставляем test -f /var/run/powerfail && /usr/local/sbin/apcupsd --killpower
вроде в такой конфигурации работает так, как меня устраивает: apcupsd запускает процедуру doshutdown и прекращает работу. Система спокойно гаснет, в последний момент ещё раз запускается "apcupsd --killpower", примерно через 30 секунд после сообщения "system halted" питание выключается.