Мой /etc/cron.daily
сценарии, кажется, выполняются намного позже от того, что я понимаю, что они должны. Я нахожусь в Ubuntu, и anacron установлен.
Если я делаю a 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
Так... кто-то знает, почему мой крон начал делать что-то в 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 ...)
только в том случае, если команда теста не прошла. Если установлен анакрон, то команда теста будет успешной, а остальная часть командной строки не будет запущена. Другими словами, эта строка выполняет cron.daily
только в том случае, если не установлен анакрон.
Тем временем, анакрон вызывается периодически, и в конце концов он выполняет cron.daily
, основываясь на собственном конфигурационном файле. Похоже, что анакрон может не вызываться раньше, иначе он бы запустил cron.daily раньше.
Если вы хотите, чтобы команда запускалась из cron, а не из анакрона, вы можете отредактировать их соответствующие конфигурации, и, возможно, установить анакрон на более ранний запуск в день. Или вы можете полностью удалить анакрон, если не хотите его использовать
.