■ はじめに
https://dk521123.hatenablog.com/entry/2019/11/29/221207
で、開始トリガーとして、Cron式を使っているのだが、 意図したタイミングでならないことが起こるので 使用する上での注意点を纏める また、
https://dk521123.hatenablog.com/entry/2016/10/25/230650
で扱ったCron でうまく動かなかった時の対処について、 切り分けの仕方などをまとめる。
目次
【1】使用上の注意 1)/etc/cron.d配下の設定ファイルの権限 2)X日ごとに実行する際の注意点 【2】トラブルシュート方法 1)cronログの確認する 2)cronサービスの動作しているかを確認する 3)実行ファイルの権限が正しいか確認する
【1】使用上の注意
1)/etc/cron.d配下の設定ファイルの権限
[1] パーミッションは644にする
* 「sudo chmod 0644 /etc/cron.d/xxxxx」を実行する
[2] 所有者はrootにする
* 「sudo chown root:root /etc/cron.d/xxxxx」を実行する
2)X日ごとに実行する際の注意点
例えば、2日に1回実行する際に「*/2」のように指定した場合 必ずしも、2日1回実行されるとは限らない。
例:Cron式:2日に1回実行する
* * */2 * *
意図しない例
2021年03月31日 <= 実行 2021年04月01日 <= 実行 => 連続で実行されてしまう
なぜ?
http://enutake.com/cron-exec-per-2day/
に詳しい説明がある。上記より一部抜粋。 ~~~~~~~~~ 日における「*」は、「1-31」を表します。 「*/2」はつまり、「1,3,5,…31」となるのです ~~~~~~~~~ よって、「3/31」「4/1」と連続で実行されてしまう
【2】トラブルシュート方法
1)cronログの確認する
* /var/log/cron にある => 「sudo cat /var/log/cron」や「sudo tail -f /var/log/cron」を実行し確認
2)cronサービスの動作しているかを確認する
確認点1:サービスが動いているかを確認する
* CentOS7の場合「sudo systemctl status crond」で起動しているか?
確認点2:Hello World的なものを作成し動くか確認する
* 「sudo tail -f /var/log/cron」でログ出力されるか?
3)実行ファイルの権限が正しいか確認する
確認点1:パーミッションは644になっているか?
=> 「sudo chmod 0644 /etc/cron.d/xxxxx」を実行する
確認点2:所有者はrootになっているか?
=> 「sudo chown root:root /etc/cron.d/xxxxx」を実行する 「crontab -e」と「sudo crontab -e」は異なる 「crontab -e」は、実行ユーザ。 「sudo crontab -e」は、rootユーザ。
参考文献
http://d.hatena.ne.jp/natsumesouxx/20100313/1268479064
https://gist.github.com/koudaiii/49ac3f8b7c207f0da31f
関連記事
cron / crontab 〜 入門編 〜
https://dk521123.hatenablog.com/entry/2016/10/25/230650
cron / crontab 〜 あれこれ編 〜
https://dk521123.hatenablog.com/entry/2021/04/01/160946
tailコマンド
https://dk521123.hatenablog.com/entry/2024/01/29/000000