Frage Wann läuft `cron.daily`?


Wann tun Einträge in cron.daily (und .weekly und .hourly) laufen, und ist es konfigurierbar?

Ich habe keine definitive Antwort darauf gefunden und hoffe, dass es eine gibt.

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


178
2018-04-26 15:31


Ursprung


Auf NetBSDDie Zeiten für die täglichen, wöchentlichen und monatlichen Cronjobs werden in der Crontab von root eingestellt. - hd1
Diese Frage wäre nützlicher, wenn die Frage bearbeitet würde, um allgemeiner zu sein. Stellen Sie zumindest die Frage generisch für alle Versionen von redhat, centos distros anstatt nur für die Versionen 4 und 5 (die nicht weit verbreitet sind und sind "Ende der Produktion" (ähnlich zu Ende des Lebens). - Trevor Boyd Smith
@TrevorBoydSmith - diese Frage wurde vor fast 8 Jahren gestellt. Fühlen Sie sich frei, eine aktualisierte für neuere Versionen zu fragen. Aber RHEL 6 gab es nicht einmalim April 2010: access.redhat.com/articles/3078#RHEL6 - warren
@warren meine Absicht ist nicht zu kritisieren, sondern nur die Frage und Stackoverflow im Allgemeinen zu verbessern. (Ich verstehe, dass RHEL 6 nicht existierte, als die Frage gestellt wurde. Weil die Frage so viele Upvotes hat, wäre es nett, sie generischer 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 ein paar Ideen haben. Gehen Sie voran und machen Sie Vorschläge zu der Frage, an die Sie gedacht haben - warren


Antworten:


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


136
2018-04-26 16:23



Gibt es einen Grund dafür? Ich kann nur annehmen, es wäre die ruhigste Zeit auf dem Server. - The Pixel Developer
@ wie viel Uhr es in ubuntu läuft? Kannst du mir bitte sagen, wie ich es überprüfen kann? Ich kann die Befehlsausgabe nicht verstehen - Narendra Jaggi
@NarendraJaggi der Befehl "run-parts" bedeutet "führe alles in diesem Ordner aus". Die Ordner cron.daily usw. funktionieren, weil es einen Cron-Job gibt, um run-parts auf diesen Verzeichnissen auszuführen. So grep run-parts /etc/crontab findet nur die Anweisungen, wenn run-parts für jedes dieser Verzeichnisse aufgerufen wird. - Jordan Reiter
Dies ist keine gültige Antwort für CentOS 6 oder höher, scrollen Sie nach unten für mehr. - lzap


Von der man-Seite:

 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


63
2018-04-26 15:35



Dies ist der Fall mit CentOS 6. Vielen Dank. - mbrownnyc
Das bedeutet 5 Uhr alle "1" Tage ?. Sorry, aber das antwortet nichts. - elysch
@elysch Lass mich die letzte Zeile meiner Antwort wiederholen: Siehe auch "man anacrontab" - leonbloy
Gute Erklärung für Anacron Hier. Grundsätzlich gilt, anacron hat keine feste Startzeit, sondern startet den Prozess basierend auf dem Zeitpunkt, zu dem der letzte Prozess ausgeführt wurde, mit einer bestimmten Verzögerung. Wenn die Maschine während des Prozesses ausgeschaltet ist hätte laufen sollen, dann wird der Prozess gestartet, wenn die Maschine wieder hochfährt, nach der angegebenen Verzögerung (ohne spezielle Bereiche + zufällige Verzögerung, siehe Antwort von @spechal). - storm_m2138
@mbrownnyc und auch CentOS-7 zu - Trevor Boyd Smith


Für CentOS 6 müssen Sie / etc / anacrontab grep und die Antwort variiert, wenn 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

Also, zwischen den Stunden von 3 Uhr morgens bis 10 Uhr nachts (nach dem Neustart und nachdem die Maschine 5 Minuten lang aufgestanden ist ^^), starte /etc/cron.daily. Wenn kein Neustart durchgeführt wird, 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


38
2017-10-29 21:20





Für SuSE - Systeme (speziell SLES 11.1 und openSuSE 10.3) wird die tägliche Laufzeit der Skripte von /etc/cron.daily durch den Wert des DAILY_TIME Variable in der / etc / sysconfig / cron Datei.

Wenn die Variable DAILY_TIME nicht festgelegt ist, lautet sie standardmäßig: (Zeitpunkt des letzten Starts + 15 Minuten).


12
2017-08-16 03:18



vielen Dank! SuSE ist für mich eher undurchsichtig und ich schätze Ihre Antwort. - dr0i


Unter Ubuntu finden Sie eine Datei / etc / crontab, von wo dies konfiguriert ist. Ich denke, es ist etwas Ähnliches auf RH und Centos.


9
2018-04-26 15:33



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 als 6:25 Uhr auf Ubuntu 15.04. Aber ich bemerke, dass Cron einige Zufälligkeit in die Zeit einfügen muss, in der es die Jobs startet. Wenn ich mir die Zeitstempel der Dateien anschaue, die mein täglicher Job erstellt, sehe ich an manchen Tagen schon um 6:26 Uhr und bei anderen erst um 8.04 Uhr. - Stéphane
Immer noch um 6:25 Uhr auf Ubuntu 16.04 - stündlich um 17 Minuten nach der Stunde. Täglich um 6:25 Uhr. Wöchentlich um 6:47 Uhr Samstag. Monatlich um 6:52 Uhr erster Tag des Monats. - WinEunuuchs2Unix


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

Yum installieren Cronie-Noanacron

yum löschen cronie-anacron

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


4
2017-08-29 19:50



Wenn anacron installiert ist, könntest du nicht einfach / etc / anacrontab wie in anderen Kommentaren hier bearbeiten, anstatt es zu deinstallieren? - cincodenada
@cincodenada Das ist nicht, was Daniel Stantos vorschlägt. - mikemaccana


Ich benutze Slackware (14.0) und habe nicht /etc/crontab. Ebenfalls, anacron ist nicht Teil der Distribution.

Die Lösung auf meinem System war so einfach wie das Laufen crontab -l als 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

4
2018-03-12 21:50





Von /etc/anacrontab auf meinem Ubuntu 9.10 System:

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

3
2018-04-26 15:54





In Bezug auf Solaris gibt es keine solche Möglichkeit. Verwenden Sie nur reguläre Crontab-Einträge für tägliche Aufgaben.


2
2018-04-26 15:52





OpenSuse 42.x Aktualisierung:

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

/ usr / lib / cron / run-crons wiederum (hat möglicherweise Codezeilen), die nach einer Variablen namens DAILY_TIME in / etc / sysconfig / cron sucht

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 es auf die Zeit ein, die Sie benötigen, und starten Sie Cron neu.

systemctl restart cron.service

0
2017-08-20 15:05