目前,当两个UPS中的一个死亡时,会触发doshutdown事件,并通过apccontrol执行默认脚本. doshutdown脚本忽略了第二台UPS,因为它们没有事件连接,并且正常关机.
为了使doshutdown事件有点连接,apcupsd的两个实例需要一个专门定制的配置文件.差异将驻留在必须从中执行事件脚本的目录中.
第一个ups的主要属性,在/etc/apcupsd/apcupsd.ups0.conf中
SCRIPTDIR /etc/apcupsd/ups0
UPSNAME ups0
DEVICE /dev/ups0
PWRFAILDIR /etc/apcupsd/ups0
NOLOGINDIR /etc/apcupsd/ups0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.0.events
对于ups1,在/etc/apcupsd/apcupsd.ups1.conf中
SCRIPTDIR /etc/apcupsd/ups1
UPSNAME ups1
DEVICE /dev/ups1
PWRFAILDIR /etc/apcupsd/ups1
NOLOGINDIR /etc/apcupsd/ups1
NISPORT 3552
EVENTSFILE /var/log/apcupsd.1.events
每个scriptdir都应该获得默认脚本的副本.
我们想要自定义doshutdown脚本,它不会直接关闭机器,但必须检查其他UPS是否仍处于打开状态,或是否处于关机模式.
在doshutdown脚本的顶部,我们可以添加类似的东西
对于ups0
if [ ! -f /tmp/ups1.is.down ]
then
touch /tmp/ups0.is.down
exit 99
fi
对于ups1
if [ ! -f /tmp/ups0.is.down ]
then
touch /tmp/ups1.is.down
exit 99
fi
状态99具有特殊含义,告诉apccontrol停止正在进行的操作.五行检查是否已创建其他UPS-down文件;如果不是,则为ups关闭创建下行文件,然后退出.如果是,意味着另一台UPS已经关闭,那么这台UPS也会停机,因此脚本应该继续并关闭机器.
文件/tmp/usp[01].is.down指示ups [01]当前是否已关闭.
重要提示:apcupsd的init.d启动脚本应删除这些文件(如果它们是在上一个会话中创建的):
rm -f /tmp/usp[01].is.down
最后,上面创建的目录/ etc / apcupsd / ups [01]应该被授予对apcupsd用户(或运行实例的相关用户)的访问权限.
chown -R apcupsd /etc/apcupsd/ups[01]
编辑修复了/tmp/ups[01].is.down名称,缺少.is.