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?
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?
Respuestas:
En Red Hat 5 o anterior, esto está controlado /etc/crontab
.
Nuevas versiones de uso /etc/anacrontab
. Por defecto, los cron.daily
scripts se ejecutan a las 4:02. La edición /etc/crontab
modificará 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 crontab
en casi cualquier sistema Linux.
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
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-crons
comando verifica las marcas de tiempo de los archivos /var/spool/cron/lastrun
entre 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
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í.
Quieres hacer dos cosas:
00 10 * * * /path/to/script
sudo systemctl restart cron.service
después de modificar esto. Esto es cierto parasystemd
sistemas basados, como Debian y Ubuntu modernos.