我一直在研究使用 sysv init 而不是 systemd(个人喜好和熟悉程度)的 Raspberry Pi UPS 代码。我正在研究特权脚本(可能是 /etc/rc.local 的一部分或从其运行)如何告诉 init电源系统中缺少电子。该init(8)
手册页告诉我,写一个大写字母(“F'ailing,” O'k或批判“L'OW)成原/etc/powerstatus
,但现在/var/run/powerstatus
,然后发送init
一个SIGPWR
信号; 但有警告说:
不鼓励使用
SIGPWR
和/etc/powerstatus
。想要与 init 交互的人应该使用/run/initctl
控制通道 - 有关更多文档,请参阅 sysvinit 包的源代码。
我查看了由 gnu.org 托管的源代码,但我没有看到任何使用这个新的奇特界面来讲述init
事情的例子。
有趣的是,Hydrasystemd
确实试图复制这个界面,因为我认为有些东西不喜欢它不在身边,但我还没有找到实际使用它的东西。有这样的事情吗?我希望一些与 UPS 相关的软件能够,例如,nut
但我认为它不会......
这个问题虽然提到了“Raspberry Pi”,但并不是针对该平台或在其上运行的 Raspbian 等发行版。
这些问题和他们的回答对填写一些相关的细节很有启发:
编辑:上述问答中至少有一个还说明了为什么有些人有 /dev/initctl 而其他人有 /run/initctl - 这是我没有意识到的(这是 Debian 的事情)。
在 Debian 服务器上,我已成功安装了该nut
软件包,以便可以通过 USB 获取我的 Ellipse PRO 1200 UPS 的状态(upsc my-ups
返回电池电量)。
注意:我还没有测试停电时会发生什么。
此 UPS 为除此 Debian 服务器之外的其他设备供电:一些路由器/交换机和 NAS。
在这种情况下,考虑到我认为 NUT 的工作方式,我应该在 NAS 上安装 NUT 并将其声明为 NUT 从站,这样 Debian 服务器(NUT 主站)会在电池电量低时命令 NAS 关闭,然后自行关闭.
问题是我无法在 NAS 上安装 NUT(不支持操作系统),但我可以通过 SSH 连接到它并告诉它关闭。
我如何/在哪里可以将我自己的脚本与通常运行的 NUT 一起放置以命令它从属关闭?
我唯一能找到的地方是SHUTDOWNCMD
在/etc/nut/upsmon.conf文件中:
SHUTDOWNCMD "/sbin/shutdown -h +0"
Run Code Online (Sandbox Code Playgroud)
我猜我可以用一个手工制作的脚本替换这个命令,该脚本将运行该 SSH-shutdown-command 并以关闭 Debian 服务器结束。
问题SHUTDOWNCMD
似乎是针对最后一次操作的:当电池电量非常低时。在我自己的脚本中联系所有其他设备可能需要比电池耗尽之前更多的时间。
谢谢