Pythonをデーモン化して動かす

Pythonをデーモン化して動かす
Photo by Hitesh Choudhary / Unsplash

自作したPythonスクリプトを常駐化して動かしたいことありませんか?DiscordのBotとか、室温計測のスクリプトとか...そんな時はデーモン化して、裏で働いてもらいましょう!ついでに再起動しても勝手に動作するように設定しておきます。

1. 環境

  • RaspberryPi ZERO WH

2. 導入

  1. デーモン化したいPythonファイルを適切なディレクトリ(今回は/opt/)に移動
sudo cp test.py /opt/
#!/usr/bin/env python3
print("Hello")
test.py

2. systemdの設定ファイルを作成

sudo vim /etc/systemd/system/test.service
[Unit]
Description = test

[Service]
ExecStart = /opt/test.py
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target
test.service

3. サービスの有効化
 再起動や電源投入後も自動的にサービスを開始してくれるようになる。

sudo systemctl enable test.service

4. サービスを開始する

sudo systemctl start test.service

5. 動いているか確認する

sudo systemctl status test.service

6. ダメそうならエラー箇所を探す

journalctl -xe -u test.service

3. 番外編

modulenotfounderrorが結構な確率で出る。pip等で外部ファイルを呼び出している場合、実行ユーザーが異なっていることがほとんどなので、rootユーザーのpipでもインストールしておこう!

  1. rootになる
sudo -i

2. 普通にpipする

# pip install {package name }

4. 最後に

最も簡単にデーモン化できました。良きデーモンライフを!