cronのジョブ登録方法によってはanacronで実行されない場合がある

2022-05-27

BADと書かれたカードを持つ手の写真。うまくいかなかった時のイメージ画像。

子ども達が使うときにだけ電源を入れるマイクラサーバーを一応DDNSに登録しています。DDNSサービスへの通知をcronで登録していますが、普段は電源が入っていないためanacronで通知をしようと思ってanacronをインストールしました。

ところが、数日使ってもDDNSへの通知がされていないようなので、改めてanacronが動作する条件を確認しました。

はじめに結論

/etc/cron.dで登録しているジョブはanacronでは実行されない…。

anacronで実行したいcronジョブは、「/etc/cron.daily」「/etc/cron.weekly」「/etc/cron.monthrly」以下のディレクトリで指定する必要がある。でした。

原因

以下のanacronの特徴にあるようにanacronの実行スケジュールは1日1回のため、スケジュール条件が決まっていない「/etc/cron.d」やcrontabでの登録、1日に複数実行される「/etc/cron.hourly」に登録されているジョブは実行されないようでした。

anacron の特徴

  • 指定したスケジュールにランダムな遅延を挿入してジョブを実行する。
  • 指定した時刻に実行できなかった場合にジョブを再実行する。
  • 実行は1日1回。
  • /etc/anacrontabでジョブ登録が可能。
  • rootしか設定できない。

まとめ

原因がわかるとなんて事はない理由ですが、cronのジョブ登録方法も複数あるためコマンドの特徴を理解していないとしばらく詰まりました。

参考サイト

IT-Tips

Posted by ううら