はじめに
経験が浅いので、参考程度にご覧ください。
Discordのボットを運用しています。
指定した時間に指定したコメントが送られるようになっていたのですが、
ボットがオンラインになっていたにも関わらず、指定した時間にコメントが送られませんでした。
今回はその原因を探っていきます。
一定時間に一回時間を取得する方法などは、他の方の記事をご参照ください。
/var/log/syslogを見てみる
直前にセッションが再開されていました。
Sep 01 07:59:25 ~ discord.gateway: Shard ID None has successfully RESUMED session hogehogefugafuga
セッションは正常に再開されたのですが、この処理をしていたので8:00の時間にコメントを送ってくれなかったのかなと思っています。
/etc/crontabでpkillを設定
crontabの詳しい設定の仕方は他の方の記事をご参照ください。
今回は私が行った設定だけご紹介します。
57 7 * * * root sudo pkill -f hogefuga
他の設定
ボットはサーバーの起動と同時にデーモンで動かしています。
デーモンの詳細な動かし方は他の方の記事をご参照ください。
ここでは私が動かしているボットの設定を見ていきます。
/etc/systemd/system/hoge.service
[Unit]
Description=hoge
After=hoge fuga piyo
[Service]
ExecStart=hoge
Restart=always
[Install]
WantedBy=hoge
「Restart=always」になっていますね。
この設定にすると、デーモンが動かなくなった時にも自動で再起動してくれるようになります。
あまり綺麗なやり方だとは思いませんが、今回はセッションを任意のタイミングで再開させるために、
一度pkillでプロセスを終了してこの設定で再開させています。
「Restart=always」は、他のことが原因で動かなくなった時にもリスタートしてくれるので今のところ便利だと思って使っています。
終わりに
正直、あまり綺麗なやり方だとは思っていませんが、
セッションを任意のタイミングで再開する方法が分からなかったため、
こういった強引な方法を取りました。
このやり方の危険性や「もっとこうした方がいいよ」というのがあれば、ぜひ教えていただきたいです。
おしまい。