🦊
crontab作成時に気を付けること
cronが実行できない時に
cronで定期実行をしたい、crontabを書いては見たものの動かない、、、そんな時の経験をまとめました
cronのログ確認
Linuxであれば以下のファイルにlogが出力されている
/var/log/cron
もしそこに実行の形跡があればcrontabの内容は正しいので、2の解決策を
実行できていなければ1の中の解決策を確認
1.crontabの確認
PATHが通っていない
cronでは普段使っている環境変数が使えないことがあるので、事前に記載したり絶対PATHを指定したりする必要がある
crontabで一番下の行だけ実行できない
最終行に改行がないと実行できなくなる。普通に編集していれば起きないが、Localで変更したものをコピペしたりファイル転送したりすると起こる可能性があるので要注意
2.crontab以外の確認
呼び出すファイル権限の確認
以下のような形でshファイルを呼び出している場合、shファイルの実行権限がない場合がある
crontab
05 */4 * * * /usr/local/test.sh
ファイルの実行権限があるかないかを要確認
dockerコマンドを実行しようとしている
あまりないケースかもしれないが、docker commandをcronで実行しようとして詰まったことがあるので記載
the input device is not a TTY
というエラーでdocker coomandが動かないことがある
これはdocker commandに-it
が入っていることが原因。これは不要なので削除するべし
それでも解決できない場合は、、
0 5 * * * /usr/local/test.sh >> /var/log/cron.log 2>&1
のように標準出力及び標準エラー出力をファイルに出力するようにconrtab -e
で変更する
cronではなく、shellファイルの中身や他の原因の可能性も探る
Discussion