🧩 背景与作用
本文基于 NUT(Network UPS Tools) 实现,Mac 可通过网络监听 Synology 群晖 NAS 所共享的 UPS 状态,做到断电时自动安全关机。
应用场景:Mac 与群晖共用一台 UPS,UPS 连接在群晖上,Mac 要能感知掉电。
项目优势:避免数据损坏、硬盘损伤;实现异构系统 UPS 联动。
适用环境:
Mac mini (Apple Silicon)
群晖 DSM 7.x
群晖 UPS 已接入并启用 UPS 服务共享
🛠 环境准备(macOS 端)
📦 安装 Homebrew(macOS 包管理器)
为了安装 NUT 套件,你需要先安装 macOS 的包管理器 —— Homebrew。请按照以下步骤操作:
打开 终端(Terminal)。
复制并粘贴以下命令执行安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装完成后,执行以下命令验证是否安装成功:
brew --version若终端成功输出版本号(如:Homebrew 4.3.2),则说明 Homebrew 已正确安装,可继续进行后续操作。
⚙️ NUT安装与配置步骤
1️⃣ 群晖端配置
登录 DSM,打开 控制面板 > 硬件和电源 > UPS:
✅ 勾选“启用 UPS 支持”
✅ 勾选“启用网络 UPS 服务器”
添加 Mac 的 IP 地址(如:
192.168.2.176)
打开 SSH,连接群晖:
ssh youruser@192.168.2.13 sudo -i查看并备份
/etc/ups/upsd.users文件:cp /etc/ups/upsd.users /etc/ups/upsd.users.bak cat /etc/ups/upsd.users如果没有配置用户,添加如下内容(示例):
[monuser] password = password upsmon master
2️⃣ Mac 端配置(Homebrew + NUT)
安装 NUT:
brew install nut修改配置文件:
sudo nano /opt/homebrew/etc/nut/upsmon.conf修改内容如下:
MONITOR ups@192.168.2.13 1 monuser password slave
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 10
DEADTIME 15
NOTIFYFLAG ONLINE SYSLOG
NOTIFYFLAG ONBATT SYSLOG
NOTIFYFLAG LOWBATT SYSLOG
NOTIFYFLAG COMMOK SYSLOG
NOTIFYFLAG COMMBAD SYSLOG
NOTIFYFLAG SHUTDOWN SYSLOG
NOTIFYFLAG REPLBATT SYSLOG
NOTIFYFLAG NOCOMM SYSLOG
NOTIFYFLAG FSD SYSLOG🚀 设置自动启动
创建 LaunchDaemon 启动项:
创建文件:
sudo nano /Library/LaunchDaemons/nut.upsmon.plist填入以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>nut.upsmon</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/sbin/upsmon</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/upsmon.log</string>
<key>StandardErrorPath</key>
<string>/tmp/upsmon.err</string>
</dict>
</plist>设置权限并启用:
sudo chmod 644 /Library/LaunchDaemons/nut.upsmon.plist
sudo chown root:wheel /Library/LaunchDaemons/nut.upsmon.plist
sudo launchctl bootstrap system /Library/LaunchDaemons/nut.upsmon.plist✅ 验证配置
查看 UPS 状态:
upsc ups@192.168.2.13输出示例应包含:
ups.status: OL
battery.charge: 100
input.voltage: xxx
...查看 upsmon 是否运行:
ps aux | grep upsmon🧱 避坑指南
📌 后续建议
建议将 Mac 和群晖的主机名都设置为静态(LAN),避免 IP 改变导致失联。
若设备较多,可考虑一台群晖 + 多台监听客户端构成 UPS 联动网络。
文档维护时间:2025-06-16 作者:@LeoneWang