LoginSignup
2
1

[初心者]ラズパイの自動実行が出来ない時にやった事

Posted at

はじめに

ラズパイ(というかLinux OS)の自動起動の方法いろいろあるけど、適当にcrontabとかでやったら出来ない!って方向けです。

ラズパイ推奨

まず、ラズパイに推奨されているのはsystemdを使った自動起動です。よほどの理由がない限りこれでやりましょう。

systemdの自動起動の方法

nanoやviなどのテキストエディタを使用して、/etc/systemd/system/ディレクトリ内に.serviceファイルを作成します。例えば、your-service.serviceという名前でファイルを作成します。

sudo nano /etc/systemd/system/your-service.service

以下のテンプレートを使用して、ファイルに内容を記述します。内容はあなたのプログラムに合わせて適宜変更してください。

[Unit]
Description=My custom service
After=network.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/your-program-directory
ExecStart=/usr/bin/python3 /home/pi/your-program-directory/your-script.py
Restart=on-failure

[Install]
WantedBy=multi-user.target

ファイルを作ったら

sudo systemctl daemon-reload #新しいサービスファイルを認識
sudo systemctl enable your-service.service #システム起動時に自動的に起動するように設定
sudo systemctl start your-service.service #サービスを起動
sudo systemctl status your-service.service #サービスの状態を確認
 #以下適宜
sudo systemctl stop your-service.service # サービスストップ
sudo systemctl disable your-service.service #システム起動時に自動的に起動しないように設定
sudo systemctl restart your-service.service #サービス再起動

systemdでやってもできない!

とりあえずログを見てみる。

journalctl -u サービス名.service

考えられる原因

  • .serviceファイルは /etc/systemd/system/ディレクトリですか?
  • 実行ユーザーを指定していますか?デフォルトはrootユーザー
  • 実行ディレクトリは実行ファイルがあるディレクトリですか?
    (絶対パスで書いたら大丈夫だけど、相対パスの場合エラー出ることがある。)

大体これで治ります。

最後に

自分は初めて自動起動するときにいろいろな方法を見て、"crontabが一番便利そうだな"って思ってましたがsystemdが推奨の方法なのでこれを覚えましょう。
今回自動起動をやったことがない初心者の方向けに、自分が詰まったところを参考に書きましたがもし参考になれば幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1