Raspberry Pi でsystemdのお勉強
こんにちは、ジムです。
本日二度目の更新です。
先ほどdiscord bot設置の記事を公開しました。
その後systemdに登録して自動起動まで行くのに少しハマったのでこれもメモとして置いておきます。
そもそもsystemdとは何ぞや。
systemd は sysvinit の後継。
電源投入後に自動でスクリプトを動かしたい時とかに使う。
使うには/etc/systemd/system/ に設定ファイルを作りコマンドで登録してあげる。
今回はdiscord botを自動起動するつもりで書いていきます。
応用すれば自作スクリプトとかマイクラサーバーとかなんでも自動化できます。(なんでもは言い過ぎ?)
まず前提
・起動したいrun.pyは ~/MusicBot/ に居る。
・screen を使ってセッションを生成しつつ起動したい。
この場合用意するものは
・起動用スクリプト
・systemd用設定ファイル
の二つ。
では、それぞれ準備していきます。
まずは起動用スクリプトですが、これの場所はお好みです。
今回はrun.pyと同じ~/MusicBot/ にしました。
ここに
#!/bin/bash cd ~/MusicBot screen -d -m python3.5 run.py
という簡単なスクリプトを書いてrun.shとしておきます。
書いたらchmod で実行権を付けておきます。
$sudo chmod 755 run.sh
これで一つめの準備は終わり。
次はsystemd設定ファイルです。
これは/etc/systemd/system/に書くという決まりがあるので
$cd /etc/systemd/system
で移動して
bot.serviceファイルを作ります。
$sudo vim bot.service
bot.service 中身
[Unit] Description = music bot After=network.target [Service] User = pi Type=forking ExecStart =/home/pi/MusicBot/run.sh Restart = no [Install] WantedBy = multi-user.target
こんな感じで中身を書いておく。中身に関しては以下を参考に書きました。
中身を書き終えコンソールに戻ってきたら
$sudo systemctl enable bot.service
で登録して完了です。
ちなみに止めたい場合はenableをdisabledに変えて打てば止まります。
あとはrebootとか打ってみて、自動でbotが起動することを確認できれば完成です。
systemd とっつきにくいけど便利だと思います。
いろいろなところで使われているようなので、知っておいて損はないかも?