Comment changer l'heure à laquelle cron.daily est exécuté sous Linux

22

J'ai un script dans cron.daily qui s'exécute à une certaine heure chaque matin. Je dois changer l'heure de son exécution.

Comment modifier l'heure à laquelle cron.daily exécute les scripts?


la source

Réponses:

24

Sur Red Hat 5 ou version antérieure, cela est contrôlé dans /etc/crontab.

Les versions plus récentes utilisent /etc/anacrontab. Par défaut, les cron.dailyscripts sont exécutés à 4h02. L'édition /etc/crontabmodifiera cette heure.

# run-parts
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

Sur les systèmes Debian / Ubuntu, cela est également contrôlé /etc/crontab.

Par exemple; une installation par défaut d'Ubuntu 12.04:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Et dans les deux cas, vous pouvez trouver plus de détails sur la syntaxe à utiliser ici: http://linux.die.net/man/5/crontab ou en exécutant man 5 crontabsur presque tous les systèmes Linux.

ewwhite
la source
3
N'oubliez pas de jouer sudo systemctl restart cron.serviceaprès avoir modifié cela. Cela est vrai pour les systemdsystèmes basés sur, tels que Debian et Ubuntu modernes.
TranslucentCloud
3

dans RHEL / CentOS 6 et supérieur

# /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
mohamed ahmed besha
la source
Donc, pour répondre à la question de savoir comment modifier l'heure à laquelle il s'exécute, je dois modifier la START_HOURS_RANGE, n'est-ce pas?
thelr
1

Sur openSUSE, la crontab ressemble à:

SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * *   root  test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1

La run-cronscommande vérifie /var/spool/cron/lastrunentre autres les horodatages des fichiers . Lorsque le temps écoulé depuis la dernière exécution a expiré, il exécutera à nouveau le fichier cron.

Le temps peut être influencé en touchant le fichier. Par exemple, pour le définir sur 2012-11-17 03:15:

touch -t 201211140315 /var/spool/cron/lastrun/cron.daily
vdboor
la source
0

Si la ligne n'était pas là, cela ne résoudra rien.

Essayez de trouver où cron.daily est mentionné, avec

grep -R cron.daily /etc

Ensuite, prenez-le à partir de là.

mvds
la source
Vous devez être très prudent si vous utilisez ces commandes. Par exemple, pour mon RedHat, il renvoie les fichiers / etc / crontab et / etc / anacrontab. Et si vous supprimez des lignes avec l'entrée cron.daily, vous désactivez simplement l'exécution de tous les scripts qui devraient être exécutés quotidiennement (pour moi, c'est logrotate, tmpwatch, cups, etc.).
Lukasz Stelmach
2
Je n'ai pas suggéré de supprimer la ligne, la question était de savoir où modifier l'heure cron.daily. C'est ainsi que vous le localisez (c'était donc plutôt une sorte de réponse «aidez-les à s'aider eux-mêmes»)
-1

Vous voulez faire deux choses:

  1. Supprimez le script de cron.daily et placez-le ailleurs.
  2. Ajoutez une entrée à votre crontab pour exécuter le script spécifié à l'heure spécifiée:

00 10 * * * /path/to/script


la source