はじめに
本記事は、こちらの記事で、1台のUPSに2台のSynology NASを接続した状態からスタートしています。
ここにLinux(Ubuntu)をインストールしたPC(以下Linux PC)を追加して、連動させます。
接続を図示すると、下図のようになります。赤のLinux PCが今回追加したPCです。

UPS Master側 の設定
接続許可
まずはUPS Masterである、Synology NAS DS420+で、追加するLinux PCの接続を許可しておきます。
UPS設定の確認
UPSの設定を、Synology NASにSSHで接続して確認します。
/etc/ups/upsmon.confのなかにある下記記載を確認。赤字が必要な情報です。(環境によりかわると思います)
MONITOR ups@localhost 1 monuser <password> master
Linux PC側
Linuxは、Ubuntu Server 24.04.2LTSを使用しています。
Nut インストール
以下コマンドで、インストールします。
sudo apt install nut
設定ファイルおよび実行スクリプト編集
設定ファイル:/etc/nut/nut.conf
モードをネットワーククライアントに設定するため、/etc/nut/nut.conf を編集します。
sudo nano /etc/nut/nut.conf
旧:MODE=none
新:MODE=netclient
設定ファイル:/etc/nut/upsmon.conf
/etc/nut/upsmon.confを編集します。
sudo nano /etc/nut/upsmon.conf
・・・
# Examples:
#
# MONITOR myups@bigserver 1 upswired blah primary
# MONITOR su700@server.example.com 1 monuser secretpass secondary
# MONITOR myups@localhost 1 monuser pass primary # (or secondary) <-118行目あたり
MONITOR ups@192.168.9.1 1 monuser <password> slave
# /etc/ups/upsmon.confで調べた内容から
#「localhost」 => 「192.168.9.1」・・・UPS Masterである、Synology NASのIPアドレスへ
# 「master」 => 「slave」へ変更
# したものを追記します。
・・・
#青字であることを確認
・・・
# for more information and ideas on how to use this feature.
MINSUPPLIES 1
・・・
・・・
# SHUTDOWNCMD "C:\PROGRA~1\SOMECO~1.bat -first_arg -second_arg"
SHUTDOWNCMD "/sbin/shutdown -h +0"
・・・
#赤字を追記
・・・
# Example:
# NOTIFYCMD /bin/notifyme
NOTIFYCMD /sbin/upssched
・・・
#青字であることを確認
・・・
# it too high or it may miss certain short-lived power events.
POLLFREQ 5
・・・
# The default is 5 seconds for both this and POLLFREQ.
POLLFREQALERT 5
・・・
# to critical and back between polls by the primary.
HOSTSYNC 15
・・・
# POLLFREQ values, and multiply by 3.
DEADTIME 15
・・・
# For Unix/Linux systems the legacy default is:
# POWERDOWNFLAG /etc/killpower
POWERDOWNFLAG "/etc/killpower"
・・・
#赤字を追記
・・・
# If you use IGNORE, don't use any other flags on the same line.
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
・・・
最後、赤字で追加した3行ですが、意味は、UPS masterから送られてくるUPSのそれぞれのステータスで、
- ONLINE:正常運転時のステータス
- ONBATT:バッテリー運転時のステータス
- LOWBATT:バッテリーが残り僅かになった時のステータス
- SYSLOG:syslogにログとして書き込みます
- EXEC:219行目に設定したNOTIFYCMDが実行されます
設定ファイル:/etc/nut/upssched.confの編集
前項で設定した、NOTIFYCMD /sbin/upssched の設定ファイル/etc/nut/upssched.confを編集します。
sudo nano /etc/nut/upssched.conf
#赤字を追記、青字を確認
# 17行めあたり
CMDSCRIPT /bin/upssched-cmd
#44行めあたり
# PIPEFN /run/nut/upssched/upssched.pipe
PIPEFN /var/run/nut/upssched.pipe
#59行めあたり
# LOCKFN /run/nut/upssched/upssched.lock
LOCKFN /var/run/nut/upssched/upssched.lock
#95行めあたり
AT ONBATT * START-TIMER upsgone 60
#113行めあたり
AT ONLINE * CANCEL-TIMER upsgone
#126行めあたり
AT LOWBATT * EXECUTE lowbatt
・・・
最後の3行ですが、以下の書式です。
AT <ステータス> <ホスト> <スクリプトに対して、どう実行するかの指定> <スクリプトに渡す引数> <タイマー秒数>
となります。
AT ONBATT * START-TIMER upsgone 60を例にとると
- ONBATT :バッテリーのステータスになったら
- *:全てのホストで
- START-TIMER :スクリプト実行までのタイマーを開始
- 60 :タイマーの時間は60秒
- upsgone :スクリプトにupsgone引数を渡し実行
となります。
ちなみにスクリプトに対する実行タイプは、
- START-TIMER:スクリプト実行までのタイマーを開始する
- CANCEL-TIMER:タイマーをキャンセルする
- EXECUTE:すぐにスクリプトを実行する(START-TIMERで、タイマー秒数に0を指定したのと同じ)
となってます。
スクリプト:/bin/upssched-cmdの編集
NOTIFYCMDとして設定した、実行スクリプトを編集します。
sudo nano /bin/upssched-cmd
# 赤字を追記
case $1 in
onbattwarn)
# Send a notification mail
echo "The UPS has been on battery for awhile" \
| mail -s"UPS monitor" bofh@pager.example.com
# Create a flag-file on the filesystem, for your own processing
/usr/bin/touch /some/path/ups-on-battery
;;
ups-back-on-power)
# Delete the flag-file on the filesystem
/bin/rm -f /some/path/ups-on-battery
;;
upsgone)
logger -t upssched-cmd "The communication with UPS has been gone for awhile"
# シャットダウンコマンドupsmon -c fsd追加
upsmon -c fsd
;;
# ローバッテリーの場合を追加
lowbatt)
logger -t upssched-cmd "UPS became lowbattery."
upsmon -c fsd
;;
*)
logger -t upssched-cmd "Unrecognized command: $1"
;;
esac
デフォルトでは、引数「upsgone」が送られてきても、ログに記録するだけで、シャットダウンするようになっていないので、コマンドを追加します。
また、引数「lowbatt」の場合がないので、追加します。「upsgone」とは、書き込まれるログの違いのみです。
ちなみに、引数「cancel」の場合は、「*)」が実行されます。ここは、ログに記録するだけです。
Nutサービスの再起動
最後に、Nutサービスを再起動します。
sudo systemctl restart nut-client
参考:Nutステータスの確認
sudo systemctl status nut-client
または
sudo systemctl status nut-monitor
● nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller
Loaded: loaded (/usr/lib/systemd/system/nut-monitor.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-03-22 14:10:26 JST; 3s ago
Process: 1677 ExecStartPre=/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-common-tmpfiles.conf (c>
Main PID: 1679 (upsmon)
Tasks: 2 (limit: 9130)
Memory: 860.0K (peak: 1.5M)
CPU: 18ms
CGroup: /system.slice/nut-monitor.service
├─1679 /lib/nut/upsmon -F
└─1681 /lib/nut/upsmon -F
・・・
確認
UPSのコンセントをぬいて、確認します。
今回は、Linux PC側は、30秒後にシャットダウンするように設定してますので、
30秒間は起動を続け、
そのあとシャットダウンすることを確認します。
また、UPSのコンセントをぬいてから、数秒後に再びUPSのコンセントを挿した場合、Linux PCはシャットダウンすることがないことを確認します。
まとめ
UPS Masterへの接続をすれば、その他はデフォルト設定で動くのでは、と思っていたのですが、全然ちがいました。
設定後は、ちゃんと動作するか確認することが大事ですね。
RAID1へのUbuntu Serverインストールとあわせて、これでサーバーとして実運用するための基本的な設定はできたと思います。
以降、Webサーバーとかファイルサーバーとか立ち上げてみようかと思っています。
関連記事
RAID1でUbuntu Server
ファイルサーバーやWebサーバーを構築するなら、Synology NASを使うのが簡単

コメント