Acciones programadas con crontab

11 09 2008

Bueno, bueno, esta es una de esas típicas tonterías que he hecho y haré miles de veces, pero que cada vez que la tengo que hacer se me olvida como hacerlo xD

Para programar tareas en linux, lo más habitual es usar el crontab, que ejecuta las tareas configuradas en un fichero, este fichero se puede editar facilmente mediante el comando:

crontab -e

El formato de este fichero es lo “complicado”, ya que si no lo utilizas con asiduidad, es fácil olvidarse de como hay que poner los distintos valores, y de ahí este post. Los campos a configurar son los siguientes:

  1. Minuto: Este campo admite como valor un número entre 0 y 60.
  2. Hora: Este campo admite valores entre 0 y 23.
  3. Día del mes: Un número entre 1 y 31
  4. Mes: Un número entre 1 y 12
  5. Día de la semana: Un número entre 0 y 7, siendo 0=7=Domingo o las 3 primeras letras del día en inglés (sun,mon,tue,wed,thu,fri,sat)

En los diferentes campos se permiten una serie de cosas para hacer más sencilla la configuración de tareas que hay que repetir en varias ocasiones, son las siguientes (Válido para todos los campos):

  • Intervalos: Se permite poner un intervalo de valores, indicando el primer valor y el último, separados por un guión (”-”)
      Ej: 0-5
  • Una lista de números separados por comas significa que la acción se ejecutará en los momentos especificados por la lista:
      Ej: 0,5,10
      Ej: sun,tue,fri
  • Un asterisco (*) indica que la acción se ejecutará para todos los valores posibles del campo en el que se coloque, por ejemplo, si colocamos un asterisco en el campo “día de la semana”, la acción se ejecutará todos los días de la semana.
  • */número indica que la acción se realizará en intervalos de “número”, por ejemplo, si ponemos */5 la acción se ejecutará cada 5 minutos.

Para acabar, guardamos el fichero, salimos, y ya tenemos nuestra acción programada.

Ejemplo para reiniciar el apache cada 30 minutos:
0,30 * * * * /etc/init.d/apache2 restart