June 17, 2020
移植 : https://gist.github.com/kei-s16/eb5eb5f6657e17eb8e9a422c167e62e0
systemdのユニットを定期的に再起動するために
を作成し、ついでに実行時にwebhookを使ってDiscordに通知を飛ばす
ark-dedicated.service
という名前で登録しています。別名で登録している場合や別のユニットを対象とする場合は適宜読み替えてください。[Unit]
Description=Restart ark-dedicated.service
[Service]
Type=oneshot
ExecStart=/bin/systemctl try-restart ark-dedicated.service
今回は誰も遊んでいないであろう毎週水曜日正午に再起動処理を実行することにします。
[Unit]
Description=Restart ark-dedicated.service every wednesday
[Timer]
OnCalendar=Wed 12:00
Persistent=True
[Install]
WantedBy=timers.target
いちいち再起動するよーとかしたよーとか言うのもめんどうなので。
通知をしたいDiscordサーバのサーバ設定→ウェブフック
からウェブフックを作り、webhook URLを取得します。
とりあえず下記コマンドで雑にメッセージを投げてみる。
curl -X POST -H 'Content-Type: application/json' -d '{"content" : "test"}' webhookのurl
restart-ark-dedicated.service
を再び編集し、ExecStartPre
でExecStart
の実行前に、ExecStartPost
でExecStart
の実行後に走らせるコマンドをそれぞれ指定します。
[Unit]
Description=Restart ark-dedicated.service
[Service]
Type=oneshot
ExecStartPre=/usr/bin/curl -X POST -H 'Content-Type: application/json' -d '{"content" : "[定期]サーバ再起動開始"}' webhookのurl
ExecStart=/bin/systemctl try-restart ark-dedicated.service
ExecStartPost=/usr/bin/curl -X POST -H 'Content-Type: application/json' -d '{"content" : "[定期]サーバ再起動完了"}' webhookのurl
このままだと再起動開始通知から速攻で再起動処理が動くのであんまりよくない。 人に優しくありたいなら30分とか1時間前に通知するようにしましょう。