cron.hourlyだけanacronで実行されない理由【crontab】

/etc/crontabcatすると、以下のように表示される。(Ubuntu:18.04.4 LTS)

$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

このファイルで色々気になった点があったので、Q&A形式で書いていく。

 

Q.test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )は、どういう意味か?

A.「anacronが存在しない場合のみcronに任せる」という意味。

  • testコマンドはファイルが存在するかどうか確認するという意味。
  • ||は「もし失敗したら右を実行する」という意味。
  • cd /は念のためカレントディレクトリをルートに設定してから実行するという意味。
  • &&は「もし成功したら右を実行する」という意味。
  • run-parts/etc/cron.daily以下にあるシェルスクリプトをすべて実行するという意味。

 

Q./etc/cron.hourlyだけanacronに処理を任せていないのは何故か?

A.anacronは最高でも「1日1回しか実行できない」仕様のため、anacronにcron.hourlyを任せても意味がないから。

例えば1/1に8回実行するはずのcronのタスクが実行できなかったとして、それをanacronに任せても翌日(1/2)に1回しか実行してくれない。

 

こういう仕様なので、「試しにanacronをインストールしてみよう」とインストールしちゃうと

  • /etc/cron.daily
  • /etc/cron.weekly
  • /etc/cron.monthly

の3つが動かなくなってしまうみたいすね・・・。

 

おわり

Linux
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。
2019年くらいからフロントエンドエンジニアを目指している元アフィリエイターです💩

職を探しています😭
よろしくお願いします🙇

penpenをフォローする
penpenをフォローする
penpenメモ

コメント

タイトルとURLをコピーしました