以下の内容はhttps://dk521123.hatenablog.com/entry/2017/08/20/184005より取得しました。


【Linux】cron / crontab 〜 基本編 〜

 ■ はじめに

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




以上の内容はhttps://dk521123.hatenablog.com/entry/2017/08/20/184005より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14