Я установил ежедневную работу анакрона, которая запускается в форме /etc/cron.daily
. Из /etc/crontab
я вижу, что он должен работать ежедневно в 06:25 (или при запуске / перезагрузке).
Однако, когда дата меняется (00:00) и компьютер включен, я не хочу, чтобы anacron ждал до 06:25. Если компьютер включен, я бы хотел запустить скрипт, как только дата изменится (00:00). Имеет ли смысл добавлять задание cron для запуска anacron @hourly?
Большое спасибо
Я нашел, как сделать это и суммировал его в моем сообщении в блоге:
Если Вы хотите изменить поведение anacron
выполниться, как только день изменяется (и не не ожидают до 7:30
как поведение по умолчанию), делают следующее:
gksu gedit /etc/cron.d/anacron
и добавьте последние 2 строки (последняя строка будет перезапускать anacron каждый час):
01 0 * * * root test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start >/dev/null
01 0 * * * root start -q anacron || :
@hourly root start -q anacron || :
Ответ Халеда неверен. Изменение этой строки не будет иметь эффекта, если установлено anacron
(что по умолчанию):
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Если существует анакрон, test -x /usr/sbin/anacron
вернет true
и предотвратит вторую половину этой линии от бега. Другой ответ (редактирование /etc/cron.d/anacron
) является правильным, поскольку именно эта конфигурация запускает сам анакрон.
как и в других ответах:
отредактируйте первые два столбца /etc/cron.d/anacron
, чтобы изменить время работы анахрона.
(/etc/crontab
значения не вступают в силу из-за || ...
)
Вы можете просто изменить строку:
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
, чтобы прочитать
0 0 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
. Это позволит запускать ежедневные задания cron в полночь.
Начиная с Ubuntu 19.10 (и, возможно, ранее) anacron
запускается с использованием таймера systemd
.
Способ изменить время выполнения анакрона
с помощью этой команды:
sudo systemctl edit --full anacron.timer
Затем измените строку:
OnCalendar=*-*-* 07..23:30
Как объяснялось в других ответах, редактирование /etc/crontab
не помогает.
25 7 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Часть перед оператором ||
только проверяет, установлен ли анакрон
, но ничего не выполняет. И часть после выполняется только в том случае, если предыдущая часть не завершилась успешно (ленивая оценка оператора), что тогда будет означать, что anacron
не установлен.
Редактирование /etc/cron.d/anacron
тоже не помогает.
30 7-23 * * * root [ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi
Условие если [ ! -d /run/systemd/system ]
предотвращает запуск скрипта, когда установлен systemd.
Правильный способ изменить время выполнения — отредактировать таймер systemd
, как описано в начале.