2009-04-14 17 views

Respuesta

3

No puede hacer esto directamente desde cron/crontab.

Los trabajos cron se ejecutan en un horario específico, no en un intervalo específico.

Una alternativa sería calcular un horario que se aproximara a "cada 72 minutos" ejecutando a la medianoche, 1:12, 2:24, 3:36, ..., y estirándolo para aproximarse al golpear a la medianoche. Su archivo crontab podría especificar todos estos tiempos como veces para ejecutar.

Otra alternativa sería tener una aplicación separada que maneje la programación e iniciar su aplicación.

22

Utilice en (hombre a). Haga que su aplicación o secuencia de comandos de inicio calcule un tiempo de inicio de 72 minutos en el futuro y planifique que se vuelva a ejecutar antes de que comience a funcionar.

Disponible en Windows XP y Vista también.

He aquí un ejemplo para GNU/Linux: en command.sh -f ahora + 72 minutos

+1

s/programarlo/programarse para funcionar nuevamente/ –

+1

Esperemos que esto se convierta en la respuesta aceptada. Una vez que haya comenzado el trabajo, puede reprogramarse cada vez que se ejecute. Sin embargo, es posible que pierdas la sincronización; así que asegúrese de reprogramar su trabajo como lo primero en su secuencia de comandos en lugar de la última. –

2

Tendrá que establecer exactamente 20 tareas para esto - es decir, fijar una a las 00:00, al lado de uno en 01 : 12, siguiente a las 02:24, etc.

20 iteraciones hacen un día completo.

Lamentablemente, esta es la única forma de hacerlo, ya que las tareas cron se configuran en un horario fijo de antemano en lugar de ejecutarse, por ejemplo, "después de X minutos se ejecutó la última tarea".

33

Dado que cron ejecuta trabajos basados ​​en el tiempo, no basados ​​en intervalos, no hay una manera deslumbrantemente simple de hacerlo. Sin embargo, aunque es un truco, puedes configurar múltiples líneas en crontab hasta que encuentres el denominador común. Puesto que usted quiere un trabajo que ejecuta cada 72 minutos, se debe ejecutar en los siguientes momentos:

  • 00:00
  • 01:12
  • 02:24
  • 03:36
  • 04 : 48
  • 06:00
  • 07:12
  • ...

Como puede ver, el patrón se repite cada 6 horas con 5 trabajos. Por lo tanto, tendrá 5 líneas en su crontab:

 
0 0,6,12,18 * * * command 
12 1,7,13,19 * * * command 
24 2,8,14,20 * * * command 
36 3,9,15,21 * * * command 
48 4,10,16,22 * * * command 

La otra opción, por supuesto, es la creación de un guión envoltorio del demonio o de concha que se ejecuta y duerme durante el tiempo deseado hasta que se detenga.

4

Siempre se puede tener el enfoque de desencadenar cron cada minuto y hacer que su script salga inmediatamente si se ejecutó hace más de 72 minutos.

2

No utilice cron ...

#!/bin/sh 
while [ true ] 
do 
    sleep 4320 
    echo "Put your program here" & 
done 
+1

Tenga cuidado si el programa falla, tendrá que reiniciarlo. Además, después de reiniciar la máquina, el programa no se ejecutará, tendrá que iniciarlo. –

+0

Sí, mejor sea hacerlo un daemon y usar monit por ejemplo para mantenerlo en funcionamiento. – mahemoff

-2

Uh Sé que esto es algo vencido, pero estaba viendo algunos problemas de programación y vi esta pregunta.

Sólo hacer esto en su crontab

*/72 * * * * /home/script.sh

+4

no funciona, al menos no con vixie cron 3.0 – hop

+2

Los minutos son 0-59. http://www.pantz.org/software/cron/croninfo.html – dresende

+1

Esto no funcionará, los minutos son 0-59 y cualquier cosa de más de 30 minutos se publicará en x pasado, es decir, 34 se publicará en 34 minutos pasado, no todos 34 minutos. – omega1

Cuestiones relacionadas