Когда запускается cron.daily?


199

Когда выполняются записи в cron.daily.weeklyи .hourly), и настраивается ли это?

Я не нашел однозначного ответа на этот вопрос и надеюсь, что он есть.

Я использую RHEL5 и CentOS 4, но для других дистрибутивов / платформ тоже было бы неплохо.


2
В NetBSD время ежедневного, еженедельного и ежемесячного cronjobs устанавливается в crontab root.
hd1

Этот вопрос был бы более полезным, если бы вопрос был отредактирован, чтобы быть более общим. По крайней мере, сделайте вопрос общим для любых версий redhat, centos distros, а не только для версий 4 и 5 (которые широко не используются и являются « концом производства » (аналогично окончанию срока службы ).
Тревор Бойд Смит

@TrevorBoydSmith - этот вопрос задавали почти 8 лет назад. Не стесняйтесь просить один обновленный для более новых версий. Но RHEL 6 не существовало в апреле 2010 года: access.redhat.com/articles/3078#RHEL6
садок

@ warren Моё намерение не в том, чтобы критиковать, а в том, чтобы просто улучшить вопрос и переполнение стека. (Я понимаю, что RHEL 6 не существовало, когда задавался вопрос. потому что вопрос имеет слишком много откликов, теперь было бы неплохо сделать его более общим.)
Тревор Бойд Смит

@TrevorBoydSmith .. уже есть ответ для CentOS / RHEL 6 :) ... Я был бы рад одобрить хорошие изменения от вас, если у вас есть идеи. Внесите предлагаемые изменения в вопрос, который вы подумали
Уоррен

Ответы:


151

Для дистрибутивов вы упоминаете:

На CentOS 5.4 (должно быть то же самое для RHEL5)

grep run-parts /etc/crontab

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Итак, cron.daily работает в 04:02.

То же самое на CentOS 4.8


1
Есть ли причина этого? Я могу только предположить, что это будет самое тихое время на сервере.
Pixel Developer

@ во сколько это работает в Ubuntu? Подскажите, пожалуйста, как я могу это проверить? я не могу понять вывод команды
Нарендра Джагги

@NarendraJaggi команда «run-parts» означает «запустить все в этой папке». Папки cron.daily и т. Д. Работают, потому что существует задание cron для выполнения частей run в этих каталогах. Так grep run-parts /etc/crontabчто просто найдите инструкции о том, когда run-parts вызывается для каждого из этих каталогов.
Джордан Рейтер

2
Это больше не правильный ответ для CentOS 6 или выше, прокрутите вниз, чтобы узнать больше.
августа

74

Со страницы руководства:

 Cron also searches for /etc/anacrontab

/etc/anacrontab в моей системе (Fedora 12):

1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

Смотрите также man anacrontab


6
Это в случае с CentOS 6. Благодарю.
mbrownnyc

3
Что значит 5 утра каждые "1" дней? Извините, но это ничего не отвечает.
elysch

3
@elysch Позвольте мне повторить последнюю строчку моего ответа: см. также «man anacrontab»
leonbloy

2
Хорошее объяснение анакрона здесь . По сути, anacron не имеет фиксированного времени запуска , а скорее запустит процесс, основываясь на том, когда последний процесс выполнялся, с указанной задержкой. Если машина выключена, когда процесс должен был запуститься, то он начнет процесс, когда машина снова включится, после указанной задержки (без специальных диапазонов + случайная задержка, см. Ответ по @spechal).
storm_m2138

2
@mbrownnyc, а также CentOS-7 тоже
Тревор Бойд Смит

43

Для CentOS 6 вам нужно выполнить grep / etc / anacrontab, и ответ будет разным, если сервер / ноутбук / dekstop / etc выключен или нет.

cat /etc/anacrontab 
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1   5   cron.daily      nice run-parts /etc/cron.daily
7   25  cron.weekly     nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly        nice run-parts /etc/cron.monthly

Таким образом, между часами 3:00 и 22:00 (после перезагрузки и после того, как компьютер работал в течение 5 минут ^^), запустите /etc/cron.daily. Если перезагрузки нет, задание должно выполняться в 3:05++.

** As defined by START_HOURS_RANGE
^^ As defined by FIELD_TWO (i.e. the 5 after the 1 in the cron.daily line)
++ plus a random time between 0 and 45 minutes as defined by RANDOM_DELAY

Ссылка: http://linux.die.net/man/5/anacrontab


14

Для систем SuSE (в частности, SLES 11.1 и openSuSE 10.3) ежедневное время выполнения сценариев /etc/cron.daily контролируется значением переменной DAILY_TIME, установленной в файле / etc / sysconfig / cron .

Если переменная DAILY_TIME не установлена, по умолчанию используется значение: (время последней загрузки + 15 минут).


большое спасибо! SuSE довольно непрозрачен для меня, и я ценю ваш ответ.
Dr0i

9

В Ubuntu вы найдете файл / etc / crontab, из которого он настроен. Я думаю, что это похоже на RH и Centos.


2
Это правильный файл для Ubuntu Lucid 10.04 LTS. Моя настройка по умолчанию - 6:25 для cron.daily.
geekQ

Все еще установлено в 6:25 утра в Ubuntu 15.04. Но я заметил, что cron должен вводить некоторую случайность во время запуска заданий. Глядя на временные метки файлов, которые создает моя ежедневная работа, я вижу, что в некоторые дни она запускается уже в 6:26, а в другие - в 8:04.
Стефан

1
Все еще установлен в 6:25 утра в Ubuntu 16.04 - каждый час в 17 минут после часа. Ежедневно в 6:25. Еженедельно в 6:47 в субботу. Ежемесячно в 6:52 первого дня месяца.
WinEunuuchs2Unix

5

CentOS6.x / RedHat6.x по умолчанию устанавливает пакет cronie-anacron. Вы должны:

ням установить cronie-noanacron

ням стереть корни-анакрон

Теперь у вас есть /etc/cron.d/dailyjobs для настройки наилучшего расписания для ваших ежедневных, еженедельных и ежемесячных заданий.


2
Если установлен anacron, не могли бы вы просто отредактировать файл / etc / anacrontab, как указано здесь, вместо его удаления?
Синкоденада

1
@cincodenada Это не то, что предлагает Даниэль Стантос.
mikemaccana

4

Я использую Slackware (14.0), и не было /etc/crontab. Также anacronне является частью дистрибутива.

Решение в моей системе было таким же простым, как запуск crontab -lс правами root:

root@flea:~# crontab -l
# If you don't want the output of a cron job mailed to you, you have to direct
# any output to /dev/null.  We'll do this here since these jobs should run
# properly on a newly installed system.  If a script fails, run-parts will
# mail a notice to root.
#
# Run the hourly, daily, weekly, and monthly cron jobs.
# Jobs that need different timing may be entered into the crontab as before,
# but most really don't need greater granularity than this.  If the exact
# times of the hourly, daily, weekly, and monthly cron jobs do not suit your
# needs, feel free to adjust them.
#
# Run hourly cron jobs at 47 minutes after the hour:
47 * * * * /usr/bin/run-parts /etc/cron.hourly 1> /dev/null
#
# Run daily cron jobs at 4:40 every day:
40 4 * * * /usr/bin/run-parts /etc/cron.daily 1> /dev/null
#
# Run weekly cron jobs at 4:30 on the first day of the week:
30 4 * * 0 /usr/bin/run-parts /etc/cron.weekly 1> /dev/null
#
# Run monthly cron jobs at 4:20 on the first day of the month:
20 4 1 * * /usr/bin/run-parts /etc/cron.monthly 1> /dev/null

3

С /etc/anacrontabмоей системы Ubuntu 9.10:

1       5       cron.daily       nice run-parts --report /etc/cron.daily
7       10      cron.weekly      nice run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly nice run-parts --report /etc/cron.monthly

2

В отношении Solaris такой возможности не существует. Просто используйте регулярные записи crontab для ежедневных задач.


1

Обновление OpenSuse 42.x:

/ etc / crontab показывает файл / usr / lib / cron / run-crons, который должен запускаться каждые 15 минут.

В свою очередь / usr / lib / cron / run-crons (содержит строки кода may), которая ищет переменную DAILY_TIME в / etc / sysconfig / cron

Файл показывает;

# At which time cron.daily should start. Default is 15 minutes after booting
# the system. Example setting would be "14:00".
# Due to the fact that cron script runs only every 15 minutes,
# it will only run on xx:00, xx:15, xx:30, xx:45, not at the accurate time
# you set.

DAILY_TIME=""

Установите нужное время и перезапустите cron с помощью;

systemctl restart cron.service
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.