決められた時間に自動実行させる

cronは、定期的に実行したいものや時間を指定して何かを実行したいときに使用する。cronの設定ファイルは crontab -e で編集できます。次のような書式で実行するタイミングとコマンドを設定します。

分 時 日 月 曜日 コマンド
* * * * * some_command

例えば、毎日6時30分にディスクの容量がどれだけ使用されているか知りたいときには次のように記入します。

30 6 * * * df -h

毎分30分おきにコードを自動実行するには、cronの設定ファイルで次のように記入します。

*/30 * * * * /path/to/command

上記の例では、/path/to/command というコマンドが毎時0分と30分に実行されます。

ラズパイでpythonコードを常に実行させておく

supervisorでプログラムをデーモン化

supervisorの使い方

  • まず、ラズベリーパイにsupervisorをインストールします。ターミナルで以下のコマンドを実行してください。
sudo apt-get install supervisor
  • 次に、プログラムをデーモン化するための設定ファイルを作成します。設定ファイルは/etc/supervisor/conf.d/ディレクトリに置きます。例えば、test.pyというプログラムをデーモン化する場合は、test.confという名前で設定ファイルを作成します。
  • 設定ファイルには、以下のような内容を記述します。
[program:test]
command=python3 /home/pi/test.py
user=pi
autostart=true
autorestart=true
stderr_logfile=/var/log/test.err.log
stdout_logfile=/var/log/test.out.log
  • ここで、各項目の意味は以下のとおりです。
  • [program:test]:プログラムの名前です。任意で構いませんが、設定ファイル名と一致させるとわかりやすいです。
  • command=python3 /home/pi/test.py:プログラムを実行するコマンドです。プログラムのパスは絶対パスで指定してください。
  • user=pi:プログラムを実行するユーザーです。通常はpiで構いませんが、必要に応じて変更してください。
  • autostart=true:起動時にプログラムを自動的に実行するかどうかです。trueにすると自動的に実行されます。
  • autorestart=true:プログラムが異常終了した場合に自動的に再起動するかどうかです。trueにすると自動的に再起動されます。
  • stderr_logfile=/var/log/test.err.log:エラーログファイルのパスです。任意で構いませんが、書き込み権限がある場所に指定してください。
  • stdout_logfile=/var/log/test.out.log:標準出力ログファイルのパスです。任意で構いませんが、書き込み権限がある場所に指定してください。
  • 設定ファイルを保存したら、supervisorを再起動して設定を反映させます。ターミナルで以下のコマンドを実行してください。
sudo service supervisor restart
  • これで、プログラムがデーモン化されました。supervisorctlコマンドでプログラムの状態や操作ができます²³。