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 とっつきにくいけど便利だと思います。

いろいろなところで使われているようなので、知っておいて損はないかも?

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください