trabajos cron con el mismo tiempo de ejecución


8

Supongamos que tengo varios trabajos cron configurados para ejecutarse al mismo tiempo: ¿se ejecutan en paralelo o solo uno tras otro?

(Mi caso es apretar Debian con cronjobs dentro de /etc/cron.d/mycronjobs).

Respuestas:


7

Para completar, los trabajos en, por ejemplo, /etc/cron.{hourly,daily,weekly,monthly} se ejecutan secuencialmente. El script run-parts recorre todos los archivos en este directorio.

02 4 * * * root run-parts /etc/cron.daily

Por lo tanto, puede usar eso en combinación con una convención de nomenclatura (similar a la numeración, /etc/init.d/rc*.dpor ejemplo) para asegurarse de que los trabajos se ejecuten secuencialmente.


¿Qué sucede si tengo varios trabajos cron dentro del mismo archivo, configurados para ejecutarse al mismo tiempo?
Gabriele

No estoy seguro de lo que quieres decir con "dentro del mismo archivo". Pero si quiere decir que tiene varias líneas con la misma especificación de tiempo (como la 0 * * * *que publicó anteriormente), como otras han publicado, no hay garantía sobre el orden en que se ejecutarán. Pueden ejecutarse en paralelo en un sistema de múltiples núcleos, AFAIK el orden en que se ejecutan puede ser diferente cada día. La convención de nomenclatura que mencioné en combinación con partes de ejecución o el uso de un script maestro que llama a los scripts de respaldo reales es la única forma de garantizar que los scripts se ejecuten en un orden particular.
Bram

Bien, ya que necesito asegurarme de que mis scripts se ejecutarán uno tras otro, creo que buscaré un "script maestro" activado por un trabajo cron y llamaré a cualquier script desde el script principal.
Gabriele

5

Las tareas enumeradas en cron se ejecutarán en paralelo, tal como suelen hacer los procesos. No hay forma de estar seguro de cuál comenzará primero, y no hay forma en cron de asegurarse de que la tarea A se haya completado antes de que comience la tarea B.


1
Puede asegurarse de que la tarea A se haya completado antes de que comience la tarea B enumerándolas en la misma línea y separándolas con un punto y coma.
Nicholas

Eso no significa que la tarea A se haya completado con éxito. Tal vez podría usar un &&, pero algo como esto debería llevarse a cabo mediante un script llamado.
Sirch

Puede usar cualquier operando que soporte bash shell. Usando &&, ||, o; en cron es una práctica común en mi experiencia.
Nicholas

2

Cron es un demonio (servicio) que se ejecuta continuamente; sin embargo, lee crontabs una vez por minuto.

La secuencia exacta en la que se ejecutan los trabajos dependerá de la implementación del crond de sus sistemas.

Los archivos sueltos que algunas distribuciones colocan dentro de /etc/cron.d/ se analizan en busca de su configuración de temporizador cron, ya que estos archivos siguen la sintaxis normal de crontab (5).

El orden en que se ejecutan los trabajos individuales depende del cronograma que establezca para ellos, obviamente.


¿Qué pasa si la programación se establece así: ---- 0 * * * * root sh / var / opt / backup_scripts / backup1 - 0 * * * * root sh / var / opt / backup_scripts / backup2 ---- ¿Lo harán ejecutar secuencialmente, es decir, backup1 y, cuando haya terminado, backup2
Gabriele

La secuencia exacta en la que se ejecutan los trabajos dependerá de la implementación del crond de sus sistemas. man cron para más detalles.
Adaptr

man cron no dice nada al respecto (al menos en Debian).
Gabriele

2

Correrán en paralelo. Puede usar los siguientes métodos para ejecutar los procesos secuencialmente.

# Use a semicolon to run command2 after command1 has completed
02 4 * * * /path/to/command1 ; /path/to/command2

# Use two ampersands to run command2 after command1 has completed successfully.
02 4 * * * /path/to/command1 && /path/to/command2

# Use two vertical rules to run command2 after command1 has completed unsuccessfully.
02 4 * * * /path/to/command1 || /path/to/command2
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.