使用此 Linux 命令管理您的 APC 电池备份系统

通过运行一个简单的实用程序:apcupsd,保护自己免受电源事件的影响。
51 位读者喜欢这个。
U.S. makes renewable energy software open source

互联网档案馆书籍图片。由 Opensource.com 修改。CC BY-SA 4.0

早在个人电脑的早期,我为最初的 IBM PC 编写了 IBM 培训课程。为了及时完成 IBM、ComputerLand 和 Sears 的培训课程,IBM 给我一台 PC 带回家,这样我就可以在晚上和周末工作——可以说是任何人在家中拥有 IBM PC 的首例。

我在佛罗里达州博卡拉顿完成了这项工作,当地一家小型电力公司通常被称为“佛罗里达闪烁和闪光”,这是有充分理由的。短暂但频繁的停电导致我不止一次丢失工作成果。不幸的是,当时没有不间断电源 (UPS) 系统来让我的 PC 在这些烦人的,有时甚至是破坏性的事件中保持运行。

UPS 使计算机能够运行足够长的时间,以应对轻微的电源事件,例如几秒钟到最多 20 或 30 分钟的停电和浪涌。在较长时间的停电情况下,现代 UPS 的功能是在 UPS 电池耗尽之前通知计算机关机。否则,突然断电可能会导致数据丢失。

计算机和 UPS 通过串行或 USB 电缆进行通信。系统服务管理通信,并向 UPS 和计算机发送适当的命令。Windows 计算机通常使用 UPS 供应商提供的免费版本软件。但是,apcupsd 实用程序支持 Linux、Windows、BSD、Solaris 和 macOS,从而在操作系统之间提供一致性。

这套工具支持 APC UPS 系统,并为 Tripp-Lite、Cyber​​Power 和其他公司生产的 UPS 系统提供不同程度的支持。我目前有来自这三家制造商的 UPS 系统在我负责的网络上运行。我没有找到受支持的 UPS 系统列表。 apcupsd 文档对此也没有帮助,我在任何网络搜索中都没有看到任何确定的信息。

请注意,这些工具名称中的“APC”部分表明它们是为 APC UPS 系统设计的。它们在其他 UPS 供应商系统上的功效取决于它们在多大程度上遵循 APC 管理界面。

在 Linux 上安装 apcupsd

由于 apcupsd 可以从 Fedora 存储库获得,因此安装 apcupsd 非常简单。以 root 用户身份发出以下命令来安装 apcupsd

# dnf -y install apcupsd

以下命令启动并启用 apcupsd,以便它在重启后重新启动。

# systemctl start apcupsd ; systemctl enable apcupsd

其他发行版也在其存储库中包含 apcupsd。

基本用法

此时,apcupsd 守护程序已启动,因此您可以使用 apcaccess 命令与之交互。此命令不带任何选项会生成一份状态报告,描述 UPS 的当前状态。

[root@test ~]# apcaccess
APC      : 001,033,0831
DATE     : 2021-11-30 21:08:10 -0500  
HOSTNAME : test.both.org
VERSION  : 3.14.14 (31 May 2016) redhat
UPSNAME  : test.both.org
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2021-11-27 13:08:58 -0500  
MODEL    : CP1500PFCLCDa
STATUS   : ONLINE
LINEV    : 120.0 Volts
LOADPCT  : 32.0 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 22.5 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
OUTPUTV  : 120.0 Volts
DWAKE    : -1 Seconds
LOTRANS  : 100.0 Volts
HITRANS  : 139.0 Volts
ALARMDEL : 30 Seconds
NUMXFERS : 2
XONBATT  : 2021-11-30 13:46:03 -0500  
TONBATT  : 0 Seconds
CUMONBATT: 5 Seconds
XOFFBATT : 2021-11-30 13:46:06 -0500  
SELFTEST : NO
STATFLAG : 0x05000008
SERIALNO : CXXLT2001977
NOMINV   : 120 Volts
NOMPOWER : 1000 Watts
END APC  : 2021-11-30 21:08:17 -0500  
[root@test ~]#

在上面的输出中,有三个字段对于管理电池备份特别重要。“负载百分比”(LOADPCT) 表示 UPS 上施加了多少负载。当设备插入电源并供电时,电池电量 (BCHARGE) 应为 100%,但在移除外部电源后会降低。“剩余时间”(TIMELEFT) 是最受关注的字段。在此示例中,如果电源发生故障,UPS 可以在当前负载下运行 22.5 分钟。

其他需要查看的项目包括 CUMONBATT 行,该行是 UPS 在电池上运行的累计时间。此字段累积了多次事件中的所有停电时间。“TONBATT”行是当前正在进行的电源丢失事件的时间。

apcaccess 的手册页描述了此输出中的其余数据项。显示的数据可能因 UPS 型号而异。

管理 UPS

在上面 apcaccess 命令的输出中,“自检”(SELFTEST) 行显示为 NO。此响应表示自上次启动 acpupsd 以来,尚未在此 UPS 上执行自检。通常,这将是上次系统启动的时间。大多数 UPS 系统每七天执行一次自检,但您可以使用 apctest 命令启动一次。

不幸的是,apctest 命令与 apcupsd 守护程序冲突,因此您需要暂时停止 apcupsd。然后您可以启动 apctest,它使用基于菜单的界面。

[root@myserver ~]# systemctl stop apcupsd 
[root@myserver ~]# apctest 


2021-12-01 06:36:47 apctest 3.14.14 (31 May 2016) redhat 
Checking configuration ... 
sharenet.type = Network & ShareUPS Disabled 
cable.type = USB Cable 
mode.type = USB UPS Driver 
Setting up the port ... 
Doing prep_device() ... 

You are using a USB cable type, so I'm entering USB test mode. 
Hello, this is the apcupsd Cable Test program. 
This part of apctest is for testing USB UPSes. 

Getting UPS capabilities...SUCCESS 

Please select the function you want to perform. 

1)  Test kill UPS power 
2)  Perform self-test 
3)  Read last self-test result 
4)  View/Change battery date 
5)  View manufacturing date 
6)  View/Change alarm behavior 
7)  View/Change sensitivity 
8)  View/Change low transfer voltage 
9)  View/Change high transfer voltage 
10) Perform battery calibration 
11) Test alarm 
12) View/Change self-test interval 
Q) Quit 

Select function number: 

警告: 注意不要意外选择项目 1,因为这将关闭 UPS,从而关闭计算机。

输入 2 并按 Enter 键以运行 UPS 自检。请注意,在自检有足够的时间完成之前,菜单会再次显示,因此结果为 IN PROGRESS。此结果来自 Cyber​​Power UPS。该程序在返回菜单之前等待 APC UPS 上的自检完成。

<snip>
Select function number: 2


This test instructs the UPS to perform a self-test
operation and reports the result when the test completes.

Clearing previous self test result...CLEARED
Initiating self test...INITIATED
Waiting for test to complete...COMPLETED
Result of last self test: IN PROGRESS

1)  Test kill UPS power
2)  Perform self-test
3)  Read last self-test result
4)  View/Change battery date
5)  View manufacturing date
6)  View/Change alarm behavior
7)  View/Change sensitivity
8)  View/Change low transfer voltage
9)  View/Change high transfer voltage
10) Perform battery calibration
11) Test alarm
12) View/Change self-test interval
 Q) Quit

UPS 会发出蜂鸣声,指示自检已完成。具体的蜂鸣模式可能因 UPS 供应商和型号而异。我的 Cyber​​Power CP1500PFCLCDa 发出两次短促的蜂鸣声。如果警报已手动静音,则不会发出声音。

自检完成后,使用菜单项 3 读取结果。在本例中,我的 UPS 已通过自检。

Select function number: 3

Result of last self test: PASSED

1)  Test kill UPS power
2)  Perform self-test
3)  Read last self-test result
4)  View/Change battery date
5)  View manufacturing date
6)  View/Change alarm behavior
7)  View/Change sensitivity
8)  View/Change low transfer voltage
9)  View/Change high transfer voltage
10) Perform battery calibration
11) Test alarm
12) View/Change self-test interval
 Q) Quit

Select function number:

这些其他菜单选项中的大多数在我的 Cyber​​Power 设备上不起作用,但正如预期的那样,它们在 APC UPS 设备上起作用。

如果 UPS 对剩余运行时间的估计不正确,则可以在受支持的 UPS 系统上使用电池校准。此选项断开 UPS 与主电源的连接,并使计算机在电池上运行,直到电池电量耗尽至最大电量的 10% 左右。此方法可以更准确地估计电池运行时间。

确保在退出 apctest 菜单后重新启动 apcupsd。

最终想法

apcupsd 程序套件提供了简单的工具来监控和管理 APC UPS 系统,并且它可以不同程度地与其他供应商的 UPS 系统一起工作。如果停电持续到电池电量耗尽的边缘,它可以提供智能的电源事件保护和托管关机。

apcupsd 后台守护程序可与大多数现代 UPS 系统配合使用,并且可以在 UPS 电池电量过低时启动计算机上的关机序列。我发现我拥有的所有三家供应商的 UPS 系统都是这种情况。其他功能,即使用 apctest 程序可以访问的功能,则存在问题。其中一些功能可能有效,而另一些功能可能无效。这取决于您的 UPS 系统的制造商和型号。

对我而言,最重要的考虑因素是 apcupsd 软件可以与 UPS 进行足够的通信,以便在 UPS 电池电量不足时启动计算机的关机命令。我关心的第二件事是 apcaccess 命令提供的信息。其余的都只是锦上添花。

对于那些喜欢 GUI 界面的人,Fedora 存储库中提供了 CGI web 和 GUI 界面。

apcupsd 软件成熟且稳定。开发仅限于修复错误。如果能够更好地支持来自 APC 以外的供应商的 UPS 系统,那就太好了。这将需要供应商合作并支持完整的 APC 软件通信接口。

可以通过邮件列表在项目的 SourceForge 页面上获得支持。

接下来阅读什么
David Both
David Both 是一位开源软件和 GNU/Linux 倡导者、培训师、作家和演讲者。自 1996 年以来,他一直从事 Linux 和开源软件工作,自 1969 年以来一直从事计算机工作。他是“系统管理员的 Linux 哲学”的坚定支持者和传播者。

1 条评论

很棒的文章!我的 Linux 机器都接了 UPS。这是一个很棒的命令,值得了解!

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.