Может кто-нибудь объяснить, почему еженедельное задание 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
, они запускаются через указанное количество минут после полуночи.