Come modificare l'ora in cui cron.daily viene eseguito in Linux


22

Ho una sceneggiatura in cron.daily che viene eseguita a una determinata ora ogni mattina. Devo cambiare il tempo di esecuzione.

Come posso cambiare l'ora in cui cron.daily esegue gli script?

linux  cron  redhat 

Risposte:


24

Su Red Hat 5 o precedente, questo è controllato in /etc/crontab.

Le versioni più recenti utilizzano /etc/anacrontab. Per impostazione predefinita, gli cron.dailyscript vengono eseguiti alle 4:02. La modifica /etc/crontabmodificherà quel momento.

# 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

Sui sistemi Debian / Ubuntu, anche questo è controllato /etc/crontab.

Per esempio; un'installazione predefinita di 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 )
#

E in entrambi i casi, puoi trovare maggiori dettagli su quale sintassi usare qui: http://linux.die.net/man/5/crontab o eseguendo man 5 crontabsu quasi tutti i sistemi Linux.


3
Non dimenticare di esibirti sudo systemctl restart cron.servicedopo averlo modificato. Questo è vero per i systemdsistemi basati su, come Debian e Ubuntu moderni.
TranslucentCloud

3

in RHEL / CentOS 6 e versioni successive

# /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

Quindi, per rispondere alla domanda su come cambiare a che ora funziona, devo modificare START_HOURS_RANGE, giusto?
thelr

1

Su openSUSE, il crontab appare come:

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

Il run-cronscomando verifica, /var/spool/cron/lastruntra le altre cose, i timestamp dei file . Allo scadere del tempo trascorso dall'ultima esecuzione, verrà eseguito nuovamente il file cron.

Il tempo può essere influenzato toccando il file. Ad esempio, per impostarlo su 2012-11-17 03:15:

touch -t 201211140315 /var/spool/cron/lastrun/cron.daily

0

Se la linea non c'era, questo non risolverà nulla.

Prova a trovare dove è menzionato cron.daily, con

grep -R cron.daily /etc

Quindi prendilo da lì.


Devi essere molto attento se usi questi comandi. Ad esempio per il mio RedHat restituisce i file / etc / crontab e / etc / anacrontab. E se rimuovi le righe con la voce cron.daily devi semplicemente disattivare l'esecuzione di tutti gli script che dovrebbero essere eseguiti quotidianamente (per me è logrotate, tmpwatch, cups e così via).
Lukasz Stelmach il

2
Non ho suggerito di rimuovere la linea, la domanda era dove modificare il tempo cron.daily. Questo è il modo in cui lo trovi (quindi questo era più un tipo di risposta "aiutali ad aiutare se stessi")

-1

Vuoi fare due cose:

  1. Rimuovi lo script da cron.daily e inseriscilo altrove.
  2. Aggiungi una voce al tuo crontab per eseguire lo script specificato all'ora specificata:

00 10 * * * /path/to/script

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.