Сроки выполнения ежедневной работы анакрона

Я установил ежедневную работу анакрона, которая запускается в форме /etc/cron.daily. Из /etc/crontab я вижу, что он должен работать ежедневно в 06:25 (или при запуске / перезагрузке).

Однако, когда дата меняется (00:00) и компьютер включен, я не хочу, чтобы anacron ждал до 06:25. Если компьютер включен, я бы хотел запустить скрипт, как только дата изменится (00:00). Имеет ли смысл добавлять задание cron для запуска anacron @hourly?

Большое спасибо

6
задан 3 January 2012 в 02:55

5 ответов

Я нашел, как сделать это и суммировал его в моем сообщении в блоге:

Если Вы хотите изменить поведение 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 || :
6
ответ дан 3 January 2012 в 02:55

Ответ Халеда неверен. Изменение этой строки не будет иметь эффекта, если установлено 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) является правильным, поскольку именно эта конфигурация запускает сам анакрон.

0
ответ дан 3 January 2012 в 02:55

как и в других ответах:

отредактируйте первые два столбца /etc/cron.d/anacron, чтобы изменить время работы анахрона.

(/etc/crontab значения не вступают в силу из-за || ...)

0
ответ дан 3 January 2012 в 02:55

Вы можете просто изменить строку:

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 в полночь.

0
ответ дан 3 January 2012 в 02:55

Начиная с 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, как описано в начале.

2
ответ дан 20 June 2020 в 06:57

Другие вопросы по тегам:

Похожие вопросы: