Назад | Перейти на главную страницу

Путаница в тайминге crontab

Может кто-нибудь объяснить, почему еженедельное задание cron, которое, как я предполагал, будет запускаться в 06:47 в воскресенье, на самом деле выполняется в 00:10 во вторник?

Это довольно чистый Debian Stretch box (некоторое время ждал использования).

У меня есть следующий 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 )
#

И следующий анакронтаб:

# /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

/ usr / sbin / anacron существует и является исполняемым.

Дата:

Tue 29 Jan 15:26:23 UTC 2019

Время работы:

15:26:30 up 41 days,  7:03,  2 users,  load average: 0.00, 0.00, 0.00

Системный журнал показывает еженедельное задание cron, выполняющееся в 00:10 сегодня утром (вторник):

Jan 29 00:10:10 RT-ARCHIVE anacron[48734]: Job `cron.weekly' started
Jan 29 00:10:10 RT-ARCHIVE anacron[49100]: Updated timestamp for job `cron.weekly' to 2019-01-29

Почему на этот раз во вторник? Если бы система была недавно загружена, я мог бы понять, что она играет в догонялки через анакрон, но это не так.

Кроме того, работа не выполнялась в воскресенье, просто для того, чтобы прояснить это.

Я использовал cron в прошлом без проблем, что мне не хватает ???

РЕДАКТИРОВАТЬ:

В качестве примечания для всех, кто приезжает сюда, я бы до сих пор (сознательно) использовал cron, а не anacron. После этого поста я понял, что на новых виртуальных серверах, которые мне предоставили, по умолчанию установлен анакрон, а на старых - нет. Согласно Debian Wiki, анакрон:

устанавливается по умолчанию с помощью Debian-Installer на ноутбуки и с помощью задачи настольных компьютеров

Так что, возможно, наши айтишники начали их настраивать по-другому ...

Три записи в /etc/crontab бежать только когда /usr/sbin/anacrontab нет или не исполняемый.

Обратите внимание, что они начинаются с test -x /usr/sbin/anacrontab. Это выполняется сначала, затем, потому что за ними следуют ||, следующее выполняется только в случае сбоя предыдущей команды.

Как комментарий в anacrontab файл также заявляет, он отменяет эти три записи.

Таким образом, ваша еженедельная запись в anacrontab запускается каждые 7 дней с 10-минутной задержкой. Поскольку вы не указали START_HOURS_RANGE, они запускаются через указанное количество минут после полуночи.