[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