crontab
スクリプトを定期的に起動するおなじみのcrontab。
ラズパイをメディアサーバーとして使ったり、VPSをソケット通信のサーバーにしたり、
ラズパイカメラで定時撮影したり。
そんな時にcrontabを使っています。
systemctlも定期で使えるのですが、書き方が複雑でとっつきにくく。。
無意識にcrontabを使っています。
crontabが起動しない
コードは完成したのに、いざcrontabを書いてワクワクしながら待っていても
プログラムが起動しないという虚しいことが多々あります。
ネット上の偉大な先輩たちは、「いや、だからログを残せよ!!」と言っていますが、
とりあえずこの方法でほぼできるので書いておきます。
sleepで時間解決
crontab内に、@ rebootで起動時にスクリプトを起動するようにしている場合、
システムの起動の準備ができていないのに、スクリプトを実行してしまい、
エラーになっている場合があります。
そこで、実行するのをシェルスクリプトで待ってあげます。
# !/bin/sh
# システムが準備ができるまで少し待つ。
sleep 10
# スクリプトの実行
/usr/bin/python3 /home/user/main_script.py
これをcrontabで呼び出します。
screenで起動
「手動ではエラーなしで実行できるのに、crontabではできてない!」
という場合、screenコマンドを使うと解決しちゃうことがあります。
(エラーの原因はわからず終いですが...)
# !/bin/sh
# システムが準備ができるまで少し待つ。
sleep 10
# 「server」というセッションでスクリプトを実行。
LD_LIBRARY_PATH=. screen -dmS server /bin/sh /home/user/exe_file.sh
これをcrontabに書いておきます。
確認
そして、実行がどんな感じになっているか確認するときは、
screen -r server
とすると、セッションに入ることができます。
終了する場合は
『Ctrl + a』の後に、『d』を押すと、終了せずに抜けることができます!