1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

crontabでうまく起動しなかった時の自分流対処方法

Last updated at Posted at 2021-05-01

crontab

スクリプトを定期的に起動するおなじみのcrontab。
ラズパイをメディアサーバーとして使ったり、VPSをソケット通信のサーバーにしたり、
ラズパイカメラで定時撮影したり。
そんな時にcrontabを使っています。

systemctlも定期で使えるのですが、書き方が複雑でとっつきにくく。。
無意識にcrontabを使っています。

crontabが起動しない

コードは完成したのに、いざcrontabを書いてワクワクしながら待っていても
プログラムが起動しないという虚しいことが多々あります。

ネット上の偉大な先輩たちは、「いや、だからログを残せよ!!」と言っていますが、
とりあえずこの方法でほぼできるので書いておきます。

sleepで時間解決

crontab内に、@ rebootで起動時にスクリプトを起動するようにしている場合、
システムの起動の準備ができていないのに、スクリプトを実行してしまい、
エラーになっている場合があります。
そこで、実行するのをシェルスクリプトで待ってあげます。

exe_script.sh
# !/bin/sh

# システムが準備ができるまで少し待つ。
sleep 10
# スクリプトの実行
/usr/bin/python3 /home/user/main_script.py

これをcrontabで呼び出します。

screenで起動

「手動ではエラーなしで実行できるのに、crontabではできてない!」
という場合、screenコマンドを使うと解決しちゃうことがあります。
(エラーの原因はわからず終いですが...)

exe_screen.sh
# !/bin/sh

# システムが準備ができるまで少し待つ。
sleep 10
# 「server」というセッションでスクリプトを実行。
LD_LIBRARY_PATH=. screen -dmS server /bin/sh /home/user/exe_file.sh

これをcrontabに書いておきます。

確認

そして、実行がどんな感じになっているか確認するときは、

shell
screen -r server

とすると、セッションに入ることができます。

終了する場合は

『Ctrl + a』の後に、『d』を押すと、終了せずに抜けることができます!

1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?