Wann läuft `cron.daily`?

199

Wann werden Einträge in cron.daily(und .weeklyund .hourly) ausgeführt, und ist dies konfigurierbar?

Ich habe keine endgültige Antwort darauf gefunden und hoffe, dass es eine gibt.

Ich verwende RHEL5 und CentOS 4, aber für andere Distributionen / Plattformen wäre das auch großartig.

Labyrinth
quelle
2
Unter NetBSD werden die Zeiten für die täglichen, wöchentlichen und monatlichen Cronjobs in der crontab von root festgelegt.
HD1
Diese Frage wäre nützlicher, wenn die Frage allgemeiner bearbeitet würde. Stellen Sie die Frage zumindest generisch für alle Versionen von RedHat, Centos Distros, anstatt nur für die Versionen 4 und 5 (die nicht häufig verwendet werden und " Produktionsende " sind (ähnlich wie das Lebensende ).
Trevor Boyd Smith
@ TrevorBoydSmith - Diese Frage wurde vor fast 8 Jahren gestellt. Fühlen Sie sich frei, eine aktualisierte Version nach neueren Versionen zu fragen. Aber RHEL 6 gab es nicht einmal im April 2010: access.redhat.com/articles/3078#RHEL6
warren
@warren meine absicht ist es nicht zu kritisieren sondern nur die frage und den stackoverflow generell zu verbessern. (Ich verstehe, dass RHEL 6 nicht existierte, als die Frage gestellt wurde. Da die Frage jetzt so viele positive Stimmen hat, wäre es schön, sie allgemeiner zu haben.)
Trevor Boyd Smith
@ TrevorBoydSmith .. es gibt bereits eine Antwort für CentOS / RHEL 6 :) ... Ich würde gerne gute Änderungen von Ihnen genehmigen, wenn Sie einige Ideen haben. Nehmen Sie die vorgeschlagenen Änderungen an der Frage vor, an die Sie gedacht haben
warren

Antworten:

151

Für die Distributionen, die Sie erwähnen:

Auf CentOS 5.4 (Sollte für RHEL5 gleich sein)

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

Also läuft cron.daily um 04:02 Uhr.

Gleiches gilt für CentOS 4.8

Richard Holloway
quelle
1
Gibt es einen Grund dafür? Ich kann nur davon ausgehen, dass es die leiseste Zeit auf dem Server wäre.
Der Pixelentwickler
@ Wann läuft es in Ubuntu? Kannst du bitte sagen, wie ich es überprüfen kann? Ich kann die Befehlsausgabe nicht verstehen
Narendra Jaggi
@NarendraJaggi Der Befehl "run-parts" bedeutet "Alles in diesem Ordner ausführen". Die Ordner cron.daily usw. funktionieren, weil es einen Cron-Job gibt, mit dem Run-Parts in diesen Verzeichnissen ausgeführt werden können. grep run-parts /etc/crontabFindet also nur die Anweisungen dazu, wann run-parts für jedes dieser Verzeichnisse aufgerufen wird.
Jordan Reiter
2
Dies ist keine gültige Antwort mehr für CentOS 6 oder höher. Scrollen Sie nach unten, um weitere Informationen zu erhalten.
lzap
74

Von der Manpage:

 Cron also searches for /etc/anacrontab

/etc/anacrontab in meinem System (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

Siehe auch man anacrontab

Leonbloy
quelle
6
Dies ist der Fall bei CentOS 6. Vielen Dank.
mbrownnyc
3
Das heißt 5 Uhr morgens alle "1" Tage. Sorry, aber das beantwortet nichts.
Elysch
3
@elysch Lass mich die letzte Zeile meiner Antwort wiederholen: Siehe auch "man anacrontab"
leonbloy
2
Gute Erklärung für Anacron hier . Grundsätzlich Anacron hat keine feste Startzeit , sondern wird den Prozess starten , basierend auf , wenn der letzte Prozess lief, mit einer bestimmten Verzögerung. Wenn die Maschine ausgeschaltet ist, wenn der Prozess hätte laufen sollen, startet sie den Prozess, wenn die Maschine nach der angegebenen Verzögerung wieder hochfährt (außer bei Sonderbereichen + zufälliger Verzögerung, siehe Antwort von @spechal).
storm_m2138
2
@mbrownnyc und auch CentOS-7
Trevor Boyd Smith
43

Für CentOS 6 müssen Sie nach / etc / anacrontab greifen, und die Antwort variiert, ob der Server / Laptop / dekstop / etc ausgeschaltet wurde oder nicht.

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

Führen Sie zwischen 3:00 und 22:00 Uhr (nach dem Neustart und nachdem der Computer 5 Minuten lang in Betrieb war ^^) /etc/cron.daily aus. Wenn es keinen Neustart gibt, sollte der Job um 3:05 AM++ ausgeführt werden.

** 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

Referenz: http://linux.die.net/man/5/anacrontab

Spechal
quelle
14

Bei SuSE-Systemen (insbesondere SLES 11.1 und openSuSE 10.3) wird die tägliche Laufzeit der Skripte /etc/cron.daily durch den Wert der Variablen DAILY_TIME gesteuert , die in der Datei / etc / sysconfig / cron festgelegt ist.

Wenn die Variable DAILY_TIME nicht festgelegt ist, lautet der Standardwert: (Zeitpunkt des letzten Starts + 15 Minuten).

Darklion
quelle
vielen Dank! SuSE ist für mich ziemlich undurchsichtig und ich schätze Ihre Antwort.
Dr0i
9

Unter Ubuntu finden Sie eine Datei / etc / crontab, in der dies konfiguriert ist. Ich denke, es ist bei RH und Centos ähnlich.

Sven
quelle
2
Dies ist die richtige Datei für Ubuntu Lucid 10.04 LTS. Meine Standardeinstellung ist 6:25 Uhr für cron.daily.
GeekQ
Immer noch auf Ubuntu auf 6:25 eingestellt 15.04. Aber ich stelle fest, dass cron beim Starten der Jobs eine gewisse Zufälligkeit einfügen muss. Wenn ich mir die Zeitstempel der Dateien ansehe, die mein täglicher Job erstellt, sehe ich, dass sie an manchen Tagen bereits um 6:26 Uhr und an anderen Tagen erst um 8:04 Uhr ausgeführt werden.
Stéphane
1
Immer noch um 6:25 Uhr auf Ubuntu eingestellt 16.04 - Stündlich um 17 Minuten nach der vollen Stunde. Täglich um 6:25 Uhr. Wöchentlich um 6:47 Uhr am Samstag. Monatlich um 6:52 am ersten Tag des Monats.
WinEunuuchs2Unix
5

CentOS6.x / RedHat6.x installiert standardmäßig das Paket cronie-anacron. Sie müssen:

yum cronie-noanacron installieren

yum cronie-anacron löschen

Dann haben Sie jetzt /etc/cron.d/dailyjobs, um die beste Planungszeit für Ihre täglichen, wöchentlichen und monatlichen Jobs zu konfigurieren.

Daniel Santos
quelle
2
Wenn anacron installiert ist, können Sie nicht einfach / etc / anacrontab gemäß den anderen Kommentaren hier bearbeiten, anstatt es zu deinstallieren?
Cincodenada
1
@cincodenada Das schlägt Daniel Stantos nicht vor.
Mikemaccana
4

Ich benutze Slackware (14.0) und hatte keine /etc/crontab. Auch anacronist nicht Bestandteil der Distribution.

Die Lösung auf meinem System war so einfach wie das Ausführen crontab -lvon 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
Paddy
quelle
3

Von /etc/anacrontabmeinem Ubuntu 9.10 System aus:

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
Dennis Williamson
quelle
2

Für Solaris gibt es keine solche Einrichtung. Verwenden Sie für die täglichen Aufgaben einfach regelmäßige crontab-Einträge.

jlliagre
quelle
1

OpenSuse 42.x Update:

/ etc / crontab zeigt eine Datei / usr / lib / cron / run-crons an, die alle 15 Minuten ausgeführt werden soll.

/ usr / lib / cron / run-crons sucht nach einer Variablen namens DAILY_TIME in / etc / sysconfig / cron

Die Datei zeigt;

# 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=""

Stellen Sie die gewünschte Zeit ein und starten Sie cron über neu.

systemctl restart cron.service
MarcoZen
quelle