systemd 環境で IBM domino の起動終了コマンドを登録する

RHEL7/CentOS7 などではサービスの起動終了処理が systemd へと変わっており、IBM domino の起動終了処理もこれに合わせて用意する必要があります。

IBM Notes and Domino wiki : Lotus Domino : Starting and Stopping Domino -with- the Server OS automatically with systemd

こちらの真似をして書くのですが、実際に書いてみた内容を以下に。

起動用シェルスクリプト /opt/ibm/domino/bin/dom_start

 

#!/bin/sh
cd /local/notesdata
/opt/ibm/domino/bin/server > /dev/null 2>&1

 

終了用シェルスクリプト /opt/ibm/domino/bin/dom_stop

 

#!/bin/sh
cd /local/notesdata
/opt/ibm/domino/bin/server -q > /dev/null 2>&1
exit 0

 

掃除用シェルスクリプト /opt/ibm/domino/bin/dom_nsd_kill

 

#!/bin/sh
cd /local/notesdata
/opt/ibm/domino/bin/nsd -kill > /dev/null 2>&1

 

systemd のファイル /etc/systemd/system/domino.service

 

[Unit]
Description=IBM Domino Server
After=syslog.target network.target

[Service]
Type=simple
User=notes
LimitNOFILE=60000
WorkingDirectory=/local/notesdata
ExecStart=/opt/ibm/domino/bin/dom_start
ExecStop=/opt/ibm/domino/bin/dom_stop
ExecStopPost=/opt/ibm/domino/bin/dom_nsd_kill
TimeoutStopSec=300
KillMode=process
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

 

User=notes のところで起動ユーザを notes にしてます。

LimitNOFILE=60000 のところで、 ulimit -n 60000 と同じ効果があります。

TimeoutStopSec=300 のところで、ExecStop の待ち時間を設定しています。

ExecStopPost のところで、終了コマンド完了後に nsd -kill を投げてます。

300秒待っても終わらなかったら終了処理をやめにして、 nsd -kill を投げるという感じの処理になってるはずです。

手元で試してみたところこれで動いてるように思います。