¿Cuándo se ejecuta `cron.daily`?

199

Cuando hacen entradas en cron.daily(y .weeklyy .hourlypista), y es configurable que?

No he encontrado una respuesta definitiva a esto, y espero que haya una.

Estoy ejecutando RHEL5 y CentOS 4, pero para otras distribuciones / plataformas también sería genial.

madriguera
fuente
2
En NetBSD , los tiempos para los cronjobs diarios, semanales y mensuales se establecen en el crontab de la raíz.
hd1
Esta pregunta sería más útil si la pregunta fue editada para que sea más genérica. Al menos, haga que la pregunta sea genérica para cualquier versión de redhat, centos distros en lugar de solo para las versiones 4 y 5 (que no se usan ampliamente y son " fin de producción " (similar al final de la vida útil ).
Trevor Boyd Smith
@TrevorBoydSmith: esta pregunta se hizo hace casi 8 años. No dude en solicitar uno actualizado para las versiones más recientes. Pero RHEL 6 ni siquiera existía en abril de 2010: access.redhat.com/articles/3078#RHEL6
warren
@warren mi intención no es criticar sino simplemente mejorar la pregunta y el stackoverflow en general. (Entiendo que RHEL 6 no existía cuando se hizo la pregunta. porque la pregunta tiene tantos votos positivos ahora sería bueno tenerla más genérica.)
Trevor Boyd Smith el
@TrevorBoydSmith ... ya hay una respuesta para CentOS / RHEL 6 :) ... Me complacería aprobar buenas ediciones si tienes algunas ideas. Siga adelante y haga modificaciones sugeridas a la pregunta que ha pensado
Warren

Respuestas:

151

Para las distribuciones que mencionas:

En CentOS 5.4 (debería ser el mismo para 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

Entonces cron.daily se ejecuta a las 04:02 am.

Lo mismo en CentOS 4.8

Richard Holloway
fuente
1
¿Hay alguna razón detrás de esto? Solo puedo suponer que sería el momento más silencioso en el servidor.
The Pixel Developer
@ ¿a qué hora se ejecuta en ubuntu? ¿Puedes decirme cómo puedo comprobarlo? No puedo entender la salida del comando
Narendra Jaggi
@NarendraJaggi, el comando "ejecutar partes" significa "ejecutar todo en esta carpeta". Las carpetas cron.daily, etc. funcionan porque hay un trabajo cron para ejecutar partes de ejecución en estos directorios. Entonces, grep run-parts /etc/crontabsolo encuentra las instrucciones sobre cuándo se ejecuta run-parts para cada uno de estos directorios.
Jordan Reiter
2
Esta ya no es una respuesta válida para CentOS 6 o superior, desplácese hacia abajo para obtener más.
lzap
74

Desde la página del manual:

 Cron also searches for /etc/anacrontab

/etc/anacrontab en mi sistema (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

Ver también man anacrontab

leonbloy
fuente
66
Este es el caso con CentOS 6. Gracias.
mbrownnyc
3
¿Eso significa 5am cada "1" días? Lo siento, pero esto no responde nada.
elysch
3
@elysch Permítanme repetir la última línea de mi respuesta: Véase también "man anacrontab"
leonbloy
2
Buena explicación de anacron aquí . Básicamente, anacron no tiene un tiempo de inicio fijo , sino que comenzará el proceso en función de cuándo se ejecutó el último proceso, con un retraso especificado. Si la máquina está apagada cuando el proceso debería haberse ejecutado , comenzará el proceso cuando la máquina vuelva a funcionar, después del retraso especificado (salvo que no haya rangos especiales + retraso aleatorio, consulte la respuesta de @spechal).
storm_m2138
2
@mbrownnyc y también CentOS-7 también
Trevor Boyd Smith
43

Para CentOS 6, necesita grep / etc / anacrontab y la respuesta varía si el servidor / laptop / dekstop / etc se ha apagado o no.

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

Entonces, entre las horas de 3AM y 10 PM** (después de reiniciar y después de que la máquina haya estado activa durante 5 minutos ^^), ejecute /etc/cron.daily. Si no hay reinicio, el trabajo debe ejecutarse a las 3:05 AM++.

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

Referencia: http://linux.die.net/man/5/anacrontab

Spechal
fuente
14

Para los sistemas SuSE (específicamente SLES 11.1 y openSuSE 10.3), el tiempo de ejecución diario de los scripts /etc/cron.daily se controla mediante el valor de la variable DAILY_TIME establecida en el archivo / etc / sysconfig / cron .

Si la variable DAILY_TIME no está establecida, su valor predeterminado es: (tiempo del último arranque + 15 minutos).

Darklion
fuente
¡muchas gracias! SuSE es bastante opaco para mí y agradezco su respuesta.
dr0i
9

En Ubuntu, encontrará un archivo / etc / crontab, desde donde está configurado. Supongo que es algo similar en RH y Centos.

Sven
fuente
2
Este es el archivo correcto para Ubuntu Lucid 10.04 LTS. Mi configuración predeterminada es 6:25 am para cron.daily.
geekQ
Todavía establecido como 6:25 am en Ubuntu 15.04. Pero noto que cron debe insertar algo de aleatoriedad en el momento en que comienza los trabajos. Al observar las marcas de tiempo de los archivos que crea mi trabajo diario, veo que algunos días se ejecuta tan temprano como las 6:26, y en otros tan tarde como las 8:04 am.
Stéphane
1
Todavía establecido a las 6:25 am en Ubuntu 16.04 - Cada hora a las 17 minutos. Todos los días a las 6:25 am. Semanalmente a las 6:47 am del sábado. Mensualmente a las 6:52 am primer día del mes.
WinEunuuchs2Unix
5

CentOS6.x / RedHat6.x instala por defecto el paquete cronie-anacron. Tienes que:

ñam instalar cronie-noanacron

ñam borrar cronie-anacron

Entonces ahora tiene /etc/cron.d/dailyjobs para configurar el mejor horario para sus trabajos diarios, semanales y mensuales.

Daniel Santos
fuente
2
Si anacron está instalado, ¿no podría simplemente editar / etc / anacrontab según otros comentarios aquí en lugar de desinstalarlo?
cincodenada
1
@cincodenada Eso no es lo que sugiere Daniel Stantos.
mikemaccana
4

Yo uso Slackware (14.0), y no tenía /etc/crontab. Además, anacronno es parte de la distribución.

La solución en mi sistema era tan simple como ejecutarse crontab -lcomo 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
arrozal
fuente
3

Desde /etc/anacrontabmi sistema 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
fuente
2

No existe tal instalación en lo que respecta a Solaris. Solo use entradas regulares de crontab para las tareas diarias.

jlliagre
fuente
1

Actualización de OpenSuse 42.x:

/ etc / crontab muestra un archivo / usr / lib / cron / run-crons que se supone que se ejecuta cada 15 minutos.

/ usr / lib / cron / run-crons a su vez (tiene muchas líneas de código) que está buscando una variable llamada DAILY_TIME en / etc / sysconfig / cron

El archivo muestra;

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

Ajústelo a la hora que necesite y reinicie cron vía;

systemctl restart cron.service
MarcoZen
fuente