Next Previous Contents

2. 请注意已过时的信息

我刚刚发现底下有一些资料已经过时了。其中来自 the latest sysvinit packageinit daemon 比起我所能描述的还要简陋。 尽管看起来目前的版本与该程序完成时的版本兼容,但当中仍然有一些对 UPS 相当重要 的支持没有文件说明。

底下所简述的控制机制只能让 powerd 送给 init powerfailpowerok 这两个信息之一而已。init 接到 powerfail 信息时执行一个命令,而当它接到 powerok 时则执行另一个命令。 这将导致 powerd 在处理低电力信号及其他特殊状况时产生逻辑上的复杂性。

较新版本的 init (像是 2.58 版) 就比较精良了。 它可以在接到信号时选择 三个 script 中之一来执行。如此一来, init 可以在接到电源断电信号时执行 powerfail script ,可以执行一个 powerfailnow script 做立即的关机 ,以及一个 powerok script 来停止任何正在进行的关机动作。这样比起要我们自行处理这些机制要简单多了。

尽管这里大部分的讨论仍假设使用旧的 init 通讯方式, 我已加入了两个新的章节来描述新的连线方法。这两个章节是 <@ref>ciroTrust Energy Protector 400/650 及 <@ref>ciroTrust Energy Protector 400/650<@ref>apc700APC Smart-UPS 700。其中前者特别详细。二者都包含了一个 powerd.c 档, 它可以在收到低电力信号时送信号给 init 以进行紧急关机, 就像是 /etc/inittab 档中那几行所写的一样。其余的, 我所能告诉您的就只有请您看看 init 的原始码了。

就我所知的,在以下所列的 UPS 软件套件中有许多也采用了新式的连线方式。


Next Previous Contents