Док говорит, что cron.monthly будет запланирован в соответствии с первым временем выполнения и сравнивает /var/spool/cron/lastrun/cron.monthly с текущим временем запуска. Вопрос в том, будет ли он работать в соответствии с директивой DAILY_TIME в файле /etc /sysconfig /cron или в /var/spool/cron/lastrun/cron.monthly time. Если это следует /var/spool/cron/lastrun/cron.monthly я должен коснуться файла, когда я хочу планировать работу ???
1 ответ
Когда cron запускает ежемесячные cronjobs?
cron
запускает ежемесячные cronjobs один раз в месяц во время изменения /var/spool/cron/lastrun/cron.monthly
(или, точнее, где-то в пределах 15-минутного диапазона после этого времени).
Вы можете видеть это в /usr/lib/cron/run-crons
, который запускается каждые 15 минут в /etc/crontab
:
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
При работе с ежемесячными cronjobs /usr/lib/cron/run-crons
:
Проверяет, является ли
cron.monthly
в/var/spool/cron/lastrun/
старше одного месяца.Пропускает ежемесячные cronjobs, если это не так.
В противном случае удаляет файл блокировки:
eval find $SPOOL/$BASE $TIME | \ xargs --no-run-if-empty rm
добавляет ежемесячный cronjob в список выполнения:
if test ! -e $SPOOL/$BASE ; then # accept this dir, if it isn't empty LIST=`find $CRONDIR ! -type d` if [ ! -z "$LIST" ] ; then RUN="${RUN} ${TIME_EXT}" fi fi
и управляет работой.
Как я могу запланировать ежемесячные cronjobs?
Если вы хотите, чтобы ежемесячные cronjobs запускались сейчас (то есть в течение следующих 15 минут), удалите
/var/spool/cron/lastrun/cron.monthly
.Если вы хотите, чтобы ежемесячные cronjobs работали, скажем, в 3 часа утра, начиная с сегодняшнего дня, выполните:
$ touch -d "$(date -d "3am last month")" /var/spool/cron/lastrun/cron.monthly
Измените приведенную выше команду в соответствии со своими потребностями.
Переменная DAILY_TIME
Переменная DAILY_TIME
применяется только к ежедневным заданиям cron, что можно увидеть в /usr/lib/cron/run-crons
и документировано в /etc/sysconfig/cron
:
# At which time cron.daily should start. (...)
DAILY_TIME=""