Raspberry Piでアプリを自動起動!
はじめに
Raspberry Pi で特定の アプリを自動起動するには、systemd
を利用すると便利です。
本記事では、systemd
のサービスファイルを作成し、Python アプリを自動起動する手順を紹介します。

systemd とは?
systemd
は、Linux の起動および管理を担う init システムの一つで、サービスやデーモンの管理、システムリソースの制御などを行います。
従来の SysVinit よりも高機能で、依存関係を考慮した起動や、自動再起動などの機能を備えています。
手順
1. Python アプリの自動起動用スクリプトの作成
自動起動させたい Python ファイルを実行するために、仮想環境を立ち上げて Python アプリを実行するシェルスクリプトを作成します。
以下の内容で /home/<username>/start_python_app.sh
を作成してください。
#!/bin/bash
source /home/<username>/venv/bin/activate # 仮想環境のアクティベート
# 仮想環境がない場合は以下のコマンドで作成
# python -m venv /home/<username>/venv
python /home/<username>/my_python_script.py # Python アプリの実行
2. systemd
サービスファイルに実行権限を付与
作成後、実行権限を付与します。
chmod +x
/home/<username>/start_python_app.sh
3. systemd
の system ディレクトリにサービスファイルをコピー
まず、systemd
用のサービスファイルを作成します。
sudo nano /etc/systemd
/system/auto_start_app.service
次に、以下の内容を記述します。
[Unit]
Description=Start Python App with Virtual Environment
After=graphical.target
[Service]
User=<username>
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/<username>/.Xauthority
ExecStart=/bin/bash /home/<username>/start_python_app.sh
[Install]
WantedBy=graphical.target
各セクションの説明
- [Unit] セクション
Description
: サービスの説明(任意の内容でOK)After=graphical.target
: GUI 環境が起動した後にサービスを起動- [Service] セクション
User=<username>
: サービスを実行するユーザーEnvironment=DISPLAY=:0
: GUI アプリケーションを起動するために必要Environment=XAUTHORITY=/home/<username>/.Xauthority
: GUI アプリケーションを動作させるために必要ExecStart=/bin/bash /home/<username>/start_python_app.sh
: Python アプリを起動するスクリプトの指定- [Install] セクション
WantedBy=graphical.target
: GUI アプリケーションを動作させる場合に必要
4. systemd
のユニットファイルを再読み込み
systemd
に新しいサービスファイルを認識させ、設定を反映させるために再読み込みを実行します。
sudo systemctl daemon-reload
5. サービスの有効化
システム起動時に自動起動するようにサービスを有効化します。
sudo systemctl enable auto_start_app.service
6. サービスの手動起動
以下のコマンドでサービスを手動で起動できます。
sudo systemctl start auto_start_app.service
サービスが起動しない場合
start
を実行してもアプリが起動しない場合、どこかでエラーが発生している可能性があります。
エラーを確認するには、以下のコマンドを実行してください。
sudo systemctl status auto_start_app.service
ログを確認し、必要に応じて修正を行ってください。
よくあるエラーメッセージとして、Unit not found
(サービスファイルが存在しない)、Failed to start
(実行に失敗)などがあります。
その場合、sudo journalctl -xe
で詳細なログを確認し、設定ミスやパスの誤りを修正してください。
7. システムの再起動
最後に、システムを再起動して、アプリが正しく自動起動するか確認します。
通常、systemctl start
コマンドで手動起動し問題がなければ、再起動は不要です。
ただし、環境変数の設定変更や systemctl enable
を適用した後は、システムを再起動して動作を確認するのが推奨されます。
sudo systemctl start auto_start_app.service
さらに、サービスの状態を確認するには、以下のコマンドを実行してください。
sudo systemctl status auto_start_app.service
この方法で問題なくアプリが起動することを確認した後、必要に応じてシステムを再起動してください。
sudo reboot
これで、Raspberry Pi の起動時に自動的に Python アプリが実行されるようになります。
おわりに
この方法を活用すれば、Raspberry Pi を使った自動化がより便利になります。
システム管理や IoT プロジェクトにも応用できるので、ぜひ試してみてください!