Quand est-ce que `cron.daily` s'exécute?

199

Quand les entrées dans cron.daily(et .weeklyet .hourly) sont-elles exécutées et est-ce configurable?

Je n'ai pas trouvé de réponse définitive à cette question et j'espère qu'il en existe une.

Je suis sous RHEL5 et CentOS 4, mais pour d’autres distributions / plateformes, ce serait également bien.

garenne
la source
2
Sur NetBSD , les heures des tâches cron quotidiennes, hebdomadaires et mensuelles sont définies dans la crontab de root.
hd1
Cette question serait plus utile si la question était modifiée pour être plus générique. À tout le moins, poser la question de manière générique pour toutes les versions de redhat, centos distros plutôt que seulement pour les versions 4 et 5 (qui ne sont pas largement utilisées et qui sont "en fin de production " (similaire à la fin de vie ).
Trevor Boyd Smith
@TrevorBoydSmith - cette question a été posée il y a près de 8 ans. N'hésitez pas à demander une mise à jour pour les versions plus récentes. Mais RHEL 6 n'existait même pas en avril 2010: access.redhat.com/articles/3078#RHEL6
warren le
@warren mon intention n'est pas de critiquer, mais simplement d'améliorer la question et le stackoverflow en général. (Je crois comprendre que RHEL 6 n'existait pas lorsque la question a été posée. Cette question a suscité beaucoup de votes positifs, il serait bon de l'avoir plus générique.)
Trevor Boyd Smith
@TrevorBoydSmith .. il y a déjà une réponse pour CentOS / RHEL 6 :) ... je serais heureux d'approuver de bonnes modifications de votre part si vous avez des idées. Allez-y et faites des suggestions de modifications à la question à laquelle vous avez pensé
Warren le

Réponses:

151

Pour les distributions, vous mentionnez:

Sur CentOS 5.4 (devrait être identique pour 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

Donc, cron.daily s'exécute à 04h02.

Idem sur CentOS 4.8

Richard Holloway
la source
1
Y a-t-il une raison derrière cela? Je ne peux que supposer que ce serait le moment le plus silencieux sur le serveur.
Le développeur Pixel
@ quelle heure il court dans Ubuntu? pouvez-vous s'il vous plaît dire comment je peux le vérifier? Je ne suis pas en mesure de comprendre la sortie de commande
Narendra Jaggi
@NarendraJaggi la commande "run-parts" signifie "tout exécuter dans ce dossier". Les dossiers cron.daily, etc. fonctionnent car il existe un travail cron pour exécuter des parties d'exécution sur ces répertoires. Il grep run-parts /etc/crontabsuffit donc de trouver les instructions sur le moment où run-parts est appelé pour chacun de ces répertoires.
Jordanie Reiter
2
Ce n'est plus une réponse valide pour CentOS 6 ou supérieur, faites défiler pour plus.
Lzap
74

De la page de manuel:

 Cron also searches for /etc/anacrontab

/etc/anacrontab dans mon système (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

Voir également man anacrontab

Léonbloy
la source
6
C'est le cas avec CentOS 6. Merci.
Mbrownnyc
3
Cela signifie 5 heures du matin tous les "1" jours ?. Désolé, mais cela ne répond rien.
elysch
3
@elysch Permettez-moi de répéter la dernière ligne de ma réponse: voir aussi "man anacrontab"
leonbloy
2
Bonne explication de l'anacron ici . Fondamentalement, anacron n’a pas d’heure de début fixe , mais démarre le processus en fonction de la date à laquelle le dernier processus s’est exécuté, avec un délai spécifié. Si la machine est éteinte au moment où le processus aurait dû être exécuté , elle le démarrera à la reprise de la machine, après le délai spécifié (sauf interdiction spéciale + délai aléatoire, voir la réponse à @spechal).
storm_m2138
2
@mbrownnyc et aussi CentOS-7 aussi
Trevor Boyd Smith
43

Pour CentOS 6, vous devez grep / etc / anacrontab et la réponse varie si le serveur / ordinateur portable / dekstop / etc a été désactivé ou non.

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

Ainsi, entre 3 heures et 22 heures (après le redémarrage et 5 minutes après le démarrage de la machine ^^), exécutez /etc/cron.daily. S'il n'y a pas de redémarrage, le travail doit être exécuté à 03h05+.

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

Référence: http://linux.die.net/man/5/anacrontab

Spechal
la source
14

Pour les systèmes SuSE (en particulier SLES 11.1 et openSuSE 10.3), la durée d'exécution quotidienne des scripts /etc/cron.daily est contrôlée par la valeur de la variable DAILY_TIME définie dans le fichier / etc / sysconfig / cron .

Si la variable DAILY_TIME n'est pas définie, sa valeur par défaut est: (heure du dernier démarrage + 15 minutes).

Darklion
la source
Merci beaucoup! SuSE est plutôt opaque pour moi et j'apprécie votre réponse.
dr0i
9

Sur Ubuntu, vous trouverez un fichier / etc / crontab à partir duquel il est configuré. Je suppose que c'est quelque chose de similaire sur RH et Centos.

Sven
la source
2
C'est le bon fichier pour Ubuntu Lucid 10.04 LTS. Mon paramètre par défaut est 6h25 pour cron.daily.
geekQ
Toujours fixé à 6h25 sur Ubuntu 15.04. Mais je remarque que cron doit insérer de l’aléatoire dans le temps où il commence les travaux. En regardant les horodatages des fichiers créés par mon travail quotidien, je constate que certains jours, il fonctionne dès 6h26 et d’autres jusqu’à 8h04.
Stéphane
1
Toujours fixé à 6h25 sur Ubuntu. 16.04 - Toutes les heures à 17 minutes. Tous les jours à 6h25. Hebdomadaire à 6h47 le samedi. Mensuel à 6h52 le premier jour du mois.
WinEunuuchs2Unix
5

CentOS6.x / RedHat6.x installe par défaut le paquetage cronie-anacron. Vous devez:

miam installer cronie-noanacron

miam effacer cronie-anacron

Ensuite, vous avez maintenant /etc/cron.d/dailyjobs pour configurer la meilleure heure de planification pour vos tâches quotidiennes, hebdomadaires et mensuelles.

Daniel Santos
la source
2
Si anacron est installé, ne pouvez-vous pas simplement éditer / etc / anacrontab conformément aux autres commentaires ici au lieu de le désinstaller?
Cincodenada
1
@cincodenada Ce n'est pas ce que suggère Daniel Stantos.
Mikemaccana
4

J'utilise Slackware (14.0) et je n'en ai pas /etc/crontab. En outre, anacronne fait pas partie de la distribution.

La solution sur mon système était aussi simple que de s’exécuter en crontab -ltant que 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
la source
3

À partir /etc/anacrontabde mon système 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
Dennis Williamson
la source
2

Il n’existe aucune installation de ce type en ce qui concerne Solaris. Il suffit d’utiliser des entrées crontab régulières pour les tâches quotidiennes.

jlliagre
la source
1

Mise à jour OpenSuse 42.x:

/ etc / crontab affiche un fichier / usr / lib / cron / run-crons censé s'exécuter toutes les 15 minutes.

/ usr / lib / cron / run-crons à son tour (contient des lignes de code) qui recherche une variable appelée DAILY_TIME dans / etc / sysconfig / cron

Le fichier montre;

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

Réglez-le sur le temps dont vous avez besoin et redémarrez cron via;

systemctl restart cron.service
MarcoZen
la source