¿Cómo conseguiría que se ejecute un trabajo cron cada 30 minutos?

224

Estoy buscando agregar una crontabentrada para ejecutar un script cada 30 minutos, cada hora y 30 minutos después de la hora o algo parecido. Tengo lo siguiente, pero no parece ejecutarse en 0.

*/30 * * * *

¿Qué cadena necesito usar?

El cron se ejecuta en OSX.

Darryl Hein
fuente
¿Has logrado que tu crontab funcione? Su problema puede no ser el crontab, sino conseguir que se use.
Eddie
Está ejecutando otros 2 scripts, uno cada minuto.
Darryl Hein
1
Estoy esperando para ver si una de las respuestas a continuación funciona, solo tengo que esperar hasta que pasen los próximos 30 minutos ... en 3 minutos.
Darryl Hein
2
... ¿No podrías cambiar de 0,30 a 0,5? Si 0,5 funciona, ¿por qué no 0,30?
George Stocker
1
¡Nunca nos dijiste si funcionaba en la hora!
Eddie

Respuestas:

487

Hacer:

0,30 * * * * your_command
vladr
fuente
1
¡Funciona genial! En CentOS crontab, tuve que hacer algo como 0,30 * * * * root your_commanddonde root sería el usuario que estoy usando.
prograhammer
@prograhammer - ¿Era esta línea parte del crontab de una raíz o el crontab de algún otro usuario?
Muhamed Huseinbašić
@ MuhamedHuseinbašić buena pregunta, ya que hay 2 crontabs diferentes (el global y luego el de un usuario). Tendré que comprobar y ver ...
prograhammer
100

crontab no entiende "intervalos", solo entiende "horario"

horas válidas: 0-23 - minutos válidos: 0-59

Ejemplo 1

30 * * * * your_command

esto significa "correr cuando el minuto de cada hora es 30 " (correría a: 1:30, 2:30, 3:30, etc.)

ejemplo # 2

*/30 * * * * your_command

esto significa "correr cuando el minuto de cada hora es divisible por 30 " (correría a: 1:30, 2:00, 2:30, 3:00, etc.)

ejemplo # 3

0,30 * * * * your_command

esto significa "correr cuando el minuto de cada hora es 0 o 30 " (correría a: 1:30, 2:00, 2:30, 3:00, etc.)

es otra forma de lograr los mismos resultados que en el ejemplo # 2

ejemplo # 4

19 * * * * your_command

esto significa "correr cuando el minuto de cada hora es 19 " (correría a: 1:19, 2:19, 3:19, etc.)

ejemplo # 5

*/19 * * * * your_command

esto significa "correr cuando el minuto de cada hora es divisible por 19 " (correría a: 1:19, 1:38, 1:57, 2:19, 2:38, 2:57, etc.)

nota: varios usuarios han realizado mejoras en esta publicación, incluido el autor

aequalsb
fuente
76

Prueba esto:

0,30 * * * * your command goes here

Según la página de manual oficial de Mac OS X crontab (5) , la /sintaxis es compatible. Por lo tanto, para descubrir por qué no funcionaba para usted, deberá mirar los registros de cron. En esos registros, debe encontrar un mensaje claro de falla.

Nota: Mac OS X parece usar Vixie Cron, lo mismo que Linux y los BSD.

Eddie
fuente
Siempre he usado * / 30 con éxito, pero no recuerdo una aplicación mía en la que fuera demasiado crítica si solo se ejecutaba una vez por hora, así que no creo que lo haya comprobado.
Adam Hawes
2
@Adam Hawes: También he usado * / xx con éxito en el pasado, pero en Linux y otros UNIX. No he probado personalmente Mac OSX. La pregunta original no decía qué sistema operativo. Algunos UNIX más antiguos no son compatibles con * / xx
Eddie
Tu respuesta también funcionó, pero Vlad tiene menos representante, así que le di los puntos.
Darryl Hein
1
@DarrylHein lol, hoy Eddie tiene menos repeticiones :-p. Yo voté a Eddie.
principiante
5

Mencionas que estás usando OS X: he usado cronnix en el pasado. No es tan geek como editarlo usted mismo, pero me ayudó a saber qué son las columnas en un santiamén. Solo un pensamiento.

Allyn
fuente
De lo contrario, esto también podría ser útil.
Darryl Hein
3

Puede usar ambos símbolos ' , ' O dividir ' / '.
Pero ' / ' es mejor.
Supongamos el caso de 'cada 5 minutos'. Si usa ' , ', debe escribir el trabajo cron de la siguiente manera:

0,5,10,15,20,25,30,35,....    *      *     *   * your_command

Significa ejecutar your_command en cada hora en todos los minutos definidos: 0,5,10, ...

Sin embargo, si usa '/', puede escribir el siguiente trabajo simple y corto:

*/5  *  *  *  *  your_command

Significa ejecutar your_command en los minutos que son divisibles por 5 o en las palabras más simples, '0,5,10, ...'

Entonces, el símbolo divisible '/' es la mejor opción siempre;

Mohsen Abasi
fuente