[devel] Re: apcupsd, incoming и /etc/init.d/halt
Sergey Y. Afonin
=?iso-8859-1?q?asy_=CE=C1_altlinux=2Eru?=
Чт Апр 14 20:43:01 MSD 2005
On Thursday 14 April 2005 19:16, Dmitry V. Levin wrote:
> > На S10 можно не реагировать.
> >
> > Или я что не понимаю ? Если не понимаю, думаю, можно поправить
>
> Или я не понимаю, что вы предлагаете, или одно из двух.
:-) Сейчас попробую как-нибудь по-другому изложить. В общем,
В пакеты nut и apcupsd добавляется init-скрипт с названием, скажем,
killpowercheck, который содержит примерно следующий кусок кода
(bash у меня, что называется, со словарем, потому буду образно
писать местами):
start)
rm -f /etc/powerkilled
;;
stop)
if [правильный ups]; then
UPSCTL=/etc/apcupsd/apccontrol
if [ -x "$UPSCTL" -a -f /etc/apcupsd/powerfail ]; then
action "Attempting to turn the UPS off:" "$UPSCTL" killpower
touch /etc/powerkilled
# или другое место root file system
fi
UPSCTL=/sbin/upsdrvctl
if [ -x "$UPSCTL" -a -f /etc/killpower ]; then
action "Attempting to turn the UPS off:" "$UPSCTL" shutdown
touch /etc/powerkilled
fi
fi
;;
симлинк на скрипт в виде K00killpowercheck создается в... Так. Что-то
у меня такое ощущение сложилось на 6-ом году использования Линуксов с
Sys V, что я весьма в общем представляю, как работает Sys V init в плане
отработки K*. Почему-то я считал, что K* текущего ранлевела запускаются,
когда работа на ранлевеле завершается, а не когда на него попадаешь. В общем,
симлинк создается в /etc/rc.d/rc0.d (в остальных случаях, то есть в rc6,
это не важно - там /etc/killpower или /etc/apcupsd/powerfail будут
отсутствовать). У скрипта должно быть что-то вроде
# chkconfig: 12345 00 00
если я теперь правильно понимаю.
Соответственно в halt дописывается:
if [ ! -f /etc/powerkilled]; then # отрицание "!", если не путаю ?
UPSCTL=/etc/apcupsd/apccontrol
if [ -x "$UPSCTL" -a -f /etc/apcupsd/powerfail ]; then
action "Attempting to turn the UPS off:" "$UPSCTL" killpower
message="The system is halted"
command=/sbin/poweroff
fi
UPSCTL=/sbin/upsdrvctl
if [ -x "$UPSCTL" -a -f /etc/killpower ]; then
action "Attempting to turn the UPS off:" "$UPSCTL" shutdown
message="The system is halted"
command=/sbin/poweroff
fi
fi
if [ -f /etc/powerkilled]; then
command=/sbin/halt
fi
> то poweroff оказывается гораздо практичнее, чем halt.
> Похоже, что это поведение должно быть более управляемым, чем сейчас.
Вроде и с poweroff/halt разруливается заодно...
--
С уважением, Сергей Афонин
asy на altlinux.ru
Подробная информация о списке рассылки Devel