Programando tareas con Cron

Para programar tareas en sistemas Linux se utiliza la utilidad Cron. Normalmente se usa utiliza para realizar copias de seguridad, o para realizar tareas de mantenimiento.

La forma normal de programar una tarea es con el comando crontab, cuya sintaxis es la siguiente:
  • $ crontab [ -u usuario] file
  • $ crontab [ -u usuario] [ -i] { -e -l -r}
Donde:
  • -u usuario: Aplica una configuración a un usuario determinado.
  • file: Instala el fichero fich como crontab del usuario.
  • -l: Muestra las tareas programadas.
  • -e: Edita el fichero de configuración.
  • -r: Elimina el fichero crontab.
Cada usuario tiene su propia fichero de configuración (crontab) se se encuentran en el directorio /var/spool/cron/crontabs. Cada línea de este fichero representa una tarea a programar, con la siguiente sintaxis:
    minutos horas día-mes mes día-semana comando
El valor que puede tomar cada uno de los campos es el siguiente:
  • minutos: 0-59
  • horas: 0-23
  • día-mes: 1-31
  • mes: 1-12
  • día-semana: 0-7 (el domingo se puede indicar con 0 o con 7)
En el fichero de configuración se puede hacer uso de ciertos caracteres especiales:
  • * (Asterísco). Para indicar todos los valores posibles. Por ejemplo en el campo día-mes indicaríamos que se ejectuase cada día.
  • - (Guión). Para indicar un rango. Por ejemplo en el campo horas índicariamos 20-23 para que el proceso se ejecute entre las 20 a 23 horas.
  • , (Coma). Para indicar una lista de valores, en el caso anterior 20,21,22,23.
  • / (Barra). Permite especificar intervalos en los rangos. Por ejemplo, si hablamos de horas, 8-16/2 significa que el comando se ejecutará a las 8, 10, 12, 14 y 16 horas. Si hablamos de minutos, por ejemplo, */5 significa cada 5 minutos.
Además se pueden indicar los días de la semana y meses con abreviaturas en vez de números (sun, mon, jan, feb…)
Y también se pueden especificar los siguientes 'sinónimos':
  • @reboot: cada vez que el sistema arranque.
  • @yearly: equivale a 0 0 1 1 *
  • @monthly: equivale a 0 0 1 * *
  • @weekly: equivale a 0 0 * * 0
  • @daily: equivale a 0 0 * * *
  • @hourly: equivale a 0 * * * *

Aparte del archivo crontab de cada usuario, hay un crontab general para todos los usuarios que se encuentra en /etc/crontab. Este fichero sólo puede ser manipulado por el administrador (root). En este archivo cada línea tiene un campo adicional en el que se especificará el usuario que ejecutará cada tarea:
    minutos horas día-mes mes día-semana usuario comando

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.