Ubuntu
cron.daily 不應該執行的時候呢?
我的
/etc/cron.daily
腳本似乎執行得比我理解的要晚得多。我在 Ubuntu 中並安裝了 anacron。如果我這樣做,
sudo cat /var/log/syslog | grep cron
我會得到類似的東西:Aug 23 01:17:01 mymachine CRON[25171]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Aug 23 02:17:01 mymachine CRON[25588]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Aug 23 03:17:01 mymachine CRON[26026]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Aug 23 03:25:01 mymachine CRON[30320]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )) Aug 23 04:17:01 mymachine CRON[26363]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Aug 23 05:17:01 mymachine CRON[26770]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Aug 23 06:17:01 mymachine CRON[27168]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Aug 23 07:17:01 mymachine CRON[27547]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Aug 23 07:30:01 mymachine CRON[2249]: (root) CMD (start -q anacron || :) Aug 23 07:30:02 mymachine anacron[2252]: Anacron 2.3 started on 2014-08-23 Aug 23 07:30:02 mymachine anacron[2252]: Will run job `cron.daily' in 5 min. Aug 23 07:30:02 mymachine anacron[2252]: Jobs will be executed sequentially Aug 23 07:35:02 mymachine anacron[2252]: Job `cron.daily' started
如您所見,在 3:25 它試圖做一些事情。但
cron.daily
執行實際上是在 7 點 35 分開始的。我
/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 3 * * * 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 ) #
據我了解,每日腳本確實是3:25。
我
/etc/anacrontab
的是:# /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin HOME=/root LOGNAME=root # These replace cron's entries 1 5 cron.daily run-parts --report /etc/cron.daily 7 10 cron.weekly run-parts --report /etc/cron.weekly @monthly 15 cron.monthly run-parts --report /etc/cron.monthly
那麼……有人知道為什麼我的 cron 在 3:25 開始做某事,然後真正在 7:35 開始工作嗎?
另外..正如您在日誌中看到的,每小時的作業正在正確的時間執行:小時和 17 分鐘,這正是我所擁有的
/etc/crontab
最後,從日誌來看,我的日常工作似乎實際上是由
anacron
而不是cron
?所以cron
找不到要執行的東西(在 3:25)然後anacron
在 7:35 執行作業?如果是真的,我該如何解決這個問題?提前致謝,
test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
這將執行
test
命令,然後僅( cd ...)
在測試命令失敗時執行序列。如果安裝了 anacron,那麼 test 命令會成功,而命令行的其餘部分將不會執行。換句話說,這條線只有在cron.daily
沒有安裝 anacron 的情況下才會執行。同時,anacron 會定期被呼叫,並最終
cron.daily
基於自己的配置文件執行。看起來 anacron 可能不會在當天早些時候被呼叫,否則它會更早地執行 cron.daily。如果您希望命令從 cron 而不是 anacron 執行,您可以編輯它們各自的配置,並可能將 anacron 設置為在當天早些時候執行。或者,如果您不想使用 anacron,則可以完全刪除它。