Коли запускається `cron.daily`?


199

Коли проводяться записи в cron.daily.weeklyта .hourly), і чи їх можна налаштувати?

Я не знайшов остаточної відповіді на це, і сподіваюся, що існує.

Я працюю RHEL5 і CentOS 4, але для інших дистрибутивів / платформ теж буде чудово.


2
У NetBSD час щоденних, щотижневих, щомісячних копійок задається в кореневому кронтабі.
hd1

Це питання було б кориснішим, якби питання було відредаговане більш загальне. Як мінімум, зробіть питання загальним для будь-яких версій redhat, centos distros, а не лише для версій 4 і 5 (які широко не використовуються і є " кінцем виробництва " (аналогічно до кінця життя ).
Тревор Бойд Сміт

@TrevorBoydSmith - це питання задавали майже 8 років тому. Не соромтеся запитати оновлену інформацію про новіші версії. Але RHEL 6 навіть не існував у квітні 2010 року: access.redhat.com/articles/3078#RHEL6
warren

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

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

Відповіді:


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

@ який час він працює в ubuntu? Скажіть, будь ласка, як я можу це перевірити? я не в змозі зрозуміти вихід команди
Нарендра Яггі

@NarendraJaggi команда "run-parts" означає "запустити все в цій папці". Папки cron.daily і т. Д. Працюють, тому що є завдання cron для виконання запущених частин у цих каталогах. Тож grep run-parts /etc/crontabпросто знаходимо вказівки щодо виклику запущених частин для кожного з цих каталогів.
Jordan Reiter

2
Це більше не відповідає дійсності для CentOS 6 або новішої версії, прокрутіть униз для отримання додаткової інформації.
lzap

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
Хороше пояснення анакрону тут . В основному, анакрон не має фіксованого часу початку , а, скоріше, запустить процес на основі, коли запустився останній процес, із заданою затримкою. Якщо машина вимкнена, коли процес повинен був запуститись, він запустить процес, коли машина повернеться назад, після вказаної затримки (заборона відсутності спеціальних діапазонів + випадкова затримка, див. Відповідь від @spechal).
storm_m2138

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

43

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

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 та 10:00 PM** (після перезавантаження та після роботи машини протягом 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 хвилин).


THX багато! SuSE досить непрозорий для мене, і я ціную вашу відповідь.
dr0i

9

На Ubuntu ви знайдете файл / etc / crontab, звідки це налаштовано. Я думаю, це щось подібне на RH та Centos.


2
Це правильний файл для Ubuntu Lucid 10.04 LTS. Моє налаштування за замовчуванням - 6:25 для cron.daily.
geekQ

Все ще встановлено як 6:25 на Ubuntu 15.04. Але я помічаю, що крон повинен вставляти деяку випадковість у час, коли він починає роботу. Дивлячись на часові позначки файлів, які створює моя щоденна робота, я бачу, що в деякі дні вона працює вже в 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. Ти мусиш:

yum встановити кроні-ноанакрон

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

Тоді у вас є /etc/cron.d/dailyjobs, щоб налаштувати найкращий час розкладу для вашої щоденної, щотижневої та щомісячної роботи.


2
Якщо anacron встановлений, ви не можете просто редагувати / etc / anacrontab згідно з іншими коментарями тут, а не видаляти його?
cincodenada

1
@cincodenada Це не те, що пропонує Даніель Стантос.
mikemaccana

4

Я використовую Slackware (14.0), і не мав /etc/crontab. Також anacronне є частиною дистрибуції.

Рішення в моїй системі було таким же простим, як і запуск crontab -lroot:

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 хвилин.

/isr / lib / cron / run-crons по черзі (має рядки коду), яка шукає змінну під назвою 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 via;

systemctl restart cron.service
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.