Jan 022013
 

Ejemplos de como programar tareas en linux con crontab.
Cómo se programan tareas con crontab?


Sintaxi:

*      		*       	*      		*      		*
minuto(0-60) 	hora(0-23)	diames(1-31)	mesaño(1-12)	diasemana(0-7)(domingo = 0 or 7)


Palabras especiales y su equivalencia:

@hourly --> 0 * * * *
@daily --> 0 0 * * *
@mounthly --> 0 0 1 * * 
@yearly --> 0 0 1 1 *
@reboot --> cuando arranca el sistema



Abreviaciones en inglés para el día de la semana:

0 = Sun 
1 = Mon
2 = Tue
3 = Wed
4 = Thu
5 = Fri
6 = Sat


Ejemplos:

Programar un trabajo para ejecutarse en el minuto 30 de cada hora de cada día:

 30 * * * * /home/test.sh 



Programar un trabajo para ejecutarse cada día a las 20:30h

 30 20 * * * /home/test.sh 



Programar un trabajo para ejecutarse de lunes a viernes a las 20:30h

 30 20 * * 1-5 /home/test.sh 



Programar un trabajo para ejecutarse los martes y los jueves a las 20:30h

 30 20 * * 2,4 /home/test.sh 



Programar un trabajo para ejecutarse los días 10 y 20 de todos los meses a las 20:30h

 30 20 10,20 * * /home/test.sh 



Programar un trabajo para ejecutarse cada 15 minutos

 */15 * * * * /home/test.sh 



Programar un trabajo para ejecutarse cada día a las 00:00h

 @daily /home/test.sh 



Programar un trabajo para ejecutarse cada primer día de mes a las 00:00h

 @mountly /home/backup.sh 



Programar un trabajo para ejecutarse durante los días laborables a las 20:30h

 30 20 * * Mon-Fri /home/test.sh 



Ejecutar un trabajo el primer viernes de cada mes a las 00:01h

 1 0 1-7 * * [ "$(date '+%a')" = "Fri" ] && /home/backup.sh





Si el post te ha ayudado a salir de un marrón, te ha servido pá lo que sea o simplemente te ha gustado y quieres colaborar puedes pinchar en los anuncios ;)

  7 Responses to “Programar tareas en linux: crontab ejemplos”

  1. Creo que te confundiste en el ejemplo diario:

    “Programar un trabajo para ejecutarse cada día a las 00:00h:”

    Es daily en lugar de hourly.

    Me sirvió de ayuda, gracias.

  2. Estimado,
    te equivocaste en la cantidad de dias de la semana es de 0 a 6, donde el 0 representa Domingo = Sunday.

    • Hola BL@CKSP@WN,
      Es de 0 a 7 porque para el domingo sirve 0 o 7, los dos son válidos.
      De todas formas, he echo una pequeña modificación para dejarlo mas claro.
      Gracias por el comtentario.

  3. Hola amigo,

    Si quisiera que se ejecutara un trabajo el primer viernes de cada mes a las doce y un minuto, seria entonces:
    1 0 * 1-7 * fri /home/backup.sh por ejemplo
    Siendo 1 minuto, 0 doce de la medianoche, 1-7 porque el primer viernes del mes debería comprender este rango y no mas de ahí, y fri que es viernes no???

    • Hola ched_franlly,

      En el ejemplo que propones se ejecutaría los 7 primeros días de cada mes y todos los viernes. Los parámetros de díaMes y díaSemana actúan como un OR no una AND.

      Un solución sería que el crontab se ejecutará los siete primeros días de mes y luego antes de ejecutar el script comprobar que que es viernes, quedaría así:
      > 1 0 1-7 * * [ “$(date ‘+%a’)” = “Fri” ] && /home/backup.sh

      En función del distribución de linux de debe añadir una barra invertida(\), quedaría así:
      > 1 0 1-7 * * [ “$(date ‘+\%a’)” = “Fri” ] && /home/backup.sh

      Gracias por la consulta, la voy a añadir al post.

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>