Cómo cambiar el tiempo cron.daily se ejecuta en Linux

22

Tengo un script en cron.daily que se ejecuta a una hora determinada todas las mañanas. Necesito cambiar el tiempo que se ejecuta.

¿Cómo cambio la hora en que cron.daily ejecuta los scripts?


fuente

Respuestas:

24

En Red Hat 5 o anterior, esto está controlado /etc/crontab.

Nuevas versiones de uso /etc/anacrontab. Por defecto, los cron.dailyscripts se ejecutan a las 4:02. La edición /etc/crontabmodificará ese tiempo.

# 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

En los sistemas Debian / Ubuntu, esto también se controla /etc/crontab.

Por ejemplo; una instalación predeterminada de 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 )
#

Y en cualquier caso, puede encontrar más detalles sobre qué sintaxis usar aquí: http://linux.die.net/man/5/crontab o ejecutándose man 5 crontaben casi cualquier sistema Linux.

ewwhite
fuente
3
No olvide realizar sudo systemctl restart cron.servicedespués de modificar esto. Esto es cierto para systemdsistemas basados, como Debian y Ubuntu modernos.
TranslucentCloud
3

en RHEL / CentOS 6 y superior

# /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
fuente
Entonces, para responder a la pregunta de cómo cambiar a qué hora se ejecuta, necesito editar el START_HOURS_RANGE, ¿correcto?
thelr
1

En openSUSE, el crontab se ve así:

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

El run-cronscomando verifica las marcas de tiempo de los archivos /var/spool/cron/lastrunentre otras cosas. Cuando expire el tiempo transcurrido desde la última ejecución, volverá a ejecutar el archivo cron.

El tiempo puede verse influido tocando el archivo. Por ejemplo, para configurarlo en 2012-11-17 03:15:

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

Si la línea no estaba allí, esto no resolverá nada.

Intenta encontrar dónde se menciona cron.daily, con

grep -R cron.daily /etc

Entonces tómalo de ahí.

mvds
fuente
Debes tener mucho cuidado si usas estos comandos. Por ejemplo, para mi RedHat, devuelve los archivos / etc / crontab y / etc / anacrontab. Y si elimina las líneas con la entrada cron.daily, simplemente apaga la ejecución de todos los scripts que deben ejecutarse diariamente (para mí es logrotate, tmpwatch, cups, etc.).
Lukasz Stelmach
2
No sugerí eliminar la línea, la pregunta era dónde modificar el tiempo cron.daily. Esta es la forma de localizarlo (por lo que este era más una "ayuda a ayudarse a sí mismos" tipo de respuesta)
-1

Quieres hacer dos cosas:

  1. Elimina el script de cron.daily y ponlo en otro lugar.
  2. Agregue una entrada a su crontab para ejecutar el script especificado en el momento especificado:

00 10 * * * /path/to/script


fuente