/etc/crontab
をcat
すると、以下のように表示される。(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つが動かなくなってしまうみたいすね・・・。
おわり
コメント