環境
- RHEL9系OS
目的とする対象はcrontab
仕事でcronといえばcrontabを使っています。
目的は以下のとおりです。
- crontab で指定した日時に、ずれることなくジョブを実行させたい
- crontab で指定した日時に、OSが落ちていても、OS起動後に勝手にそのジョブが実行されることはない
crontabを時間ぴったりに実行させたい場合、cron-noanacronが必要だと勘違いしていた
昔RHEL7を構築したときに、
CentOS7でcronを指定日時に実行するって記事を見て、
cron-anacronをcron-noanacronに入れ替えていたことがあった。
だが、
crontab の指定日時に対して、cron-anacronは干渉しないらしい。
cron-anacronが担当するのは、
- cron.daily
- cron.weekly
- cron.monthly
のとこだけっぽい。
cron-anacronが入っているRHEL9で、crontabの動きを検証した。
時間ぴったりに動いた。
crontab -ie
でジョブを登録。
時間ぴったりに動いたことを確認した。
ちなみに、登録したジョブは
touch /tmp/tmpfile
みたいなやつで、作成されたファイルのタイムスタンプを見て時間ぴったりに動いたかどうかを判断した。
なので秒単位でのズレは見ていない。(そもそも秒単位での指定はできないけどね。~時~分0秒に起動したかどうかは見てないってこと)
2個のジョブを同時日時に登録しても、時間ぴったりに動いた。
crontab -ie
でジョブを登録。
2個のJOBが時間ぴったりに動いたことを確認した。
ちなみに、登録したジョブは
0 12 * * * touch /tmp/tmpfile
0 12 * * * touch /tmp/tmpfile2
みたいなやつで、作成されたファイルのタイムスタンプを見て時間ぴったりに動いたかどうかを判断した。
なので2つのファイルが作られたタイミングについて、秒単位でのズレは見ていない。
OS停止中に登録したジョブは動かなかった(期待通り)
11:59 に、
0 12 * * * touch /tmp/tmpfile1200
みたいなのをcrontab に登録し、
↓
OSをshutdown 。
↓
12時1分を過ぎた後で、OSを起動。
↓
JOBが動いていないことを確認。
動いていなかった。
コメント