Programar tareas con crontab

En este capítulo veremos como podemos configurar nuestro sistema operativo para realizar tareas periódicas de una manera muy cómoda. Tenemos dos mecanismos básicos para programar tareas: crontab y at. El primero nos permite programar tareas que queremos repetir de forma periódica, y el segundo nos permite realizar uan tarea a una hora determinada pero sólo una vez. Veamos su funcionamiento.

Crontab: realizando tareas periódicas

El comando crontab nos permite programar tareas para realizarlas a ciertas horas, ciertos días de la semana, del mes, del año, etc. Todo ello siguiendo una sintaxis muy sencilla. Con este comando, cada usuario puede definir sus propias tareas programadas. Su sintaxis básica es la siguiente:

  • crontab -l Mostrar las tareas programadas por el usuario.
  • crontab -e Editar el fichero crontab. Con esto editaremos el fichero de configuración de crontab de cada usuario para poder modificar las tareas programadas.
  • crontab -r Eliminar el fichero crontab corriente.
  • crontab -u <usuario> Aplicar una de las opciones anteriores para un usuario determinado. Sólo root puede hacerlo.

Editando nuestro fichero crontab

Cuando hacemos un crontab -e procederemos a editar nuestro fichero crontab con el editor que tengamos definido en las variables de entorno VISUAL o EDITOR; si no las tenemos definidas, se utilizará el editor vi.

El fichero de crontab tiene una sintaxis específica que deberemos seguir. Introduciremos una línea para cada tarea que queramos programar. Cada línea se compone de seis campos separados por espacios o tabuladores; estos campos son, en orden: minuto, hora, dia, mes, año, comando. Siguiendo esto, podríamos tener un fichero como el siguiente (las líneas que comienzan por # son comentarios y no afectan):

# Cada Navidad reproducir una melodía
0 0 25 12 * mpg123 ~/musica/feliz_navidad.mp3
# Hacer una copia de seguridad del directorio documentos cada día a las 00:00
0 0 * * * tar -czf docs-`date -I`.tar.gz ~/documentos/

(recordad que el símbolo ~ es equivalente a $HOME, y a /home/usuario/)

A la hora de expresar los minutos, horas, días, meses y año, podemos utilizar listas: 3,23,43; rangos de tiempo: 1-5; pasos: 2-6/2 (= 2,4,6); y * (cualquier valor).

Como se puede apreciar, esta sintaxis es bastante flexible, y nos permite programar casi cualquier cosa. Además, podemos hacernos nuestros scripts y hacer que crontab los ejecute para tener tareas programadas más complejas.

También disponemos de un fichero de crontab para el sistema. Es el fichero /etc/crontab, pero sólo root puede modificarlo.

Para ver en más detalle como funciona este comando, podemos consultar las páginas del manual: man crontab y man 5 crontab.

At: ejecutando tareas a cierta hora una sola vez

Este comando nos permite ejecutar tareas a una cierta hora solamente una vez. Para ello utilizaremos el comando at <hora>. Por ejemplo:

$ at 5:30pm

o bien

$ at 17:30

Una vez hayamos ejecutado esto nos aparecerá el prompt de at para que introduzcamos nuestros comandos o tareas que queramos que se ejecuten a esa hora, por ejemplo:

at> gmessage "Hora de irse!!"

Una vez hayamos terminado de introducir los comandos, presionaremos Control + D para salir de at.

Podemos especificar la hora de siguientes maneras:

  • now + <intervalo> Donde la sintaxis para el intervalo es: <n> (minutes|hours|days|weeks|months). Por ejemplo podríamos hacer así para programar tareas para dentro de 3 horas: $ at now + 3 hours
  • <hora><dia> Para especificar la fecha por completo. El parámetro <hora> es obligatorio. Podemos ingresar un valores de la forma 1800,18:00,0600pm, o bien uno de los 3 valores especiales: noon (mediodia), teatime (16:00) o midnight (00:00). El parámetro <dia> es opcional y podemos especificarlo de las siguientes maneras: 12/23/2005 (notación americana), 23.12.2005 (notación europea). Podemos omitir el año, pero entonces sólo podemos usar la notación europea (por ejemplo: 23.12). También podemos especificar el mes abreviado como: Dec 23 o bien como 23 Dec.

Además de esto, at también acepta las siguientes opciones:

  • -l Para mostrar la lista de tareas que tenemos programadas.
  • -d <num_tarea> Para eliminar la tarea que queramos. Cada tarea tiene asociado un número que podemos ver con la opción anterior.

Estas son las principales características de at. Como siempre, para ampliar cualquier información podemos consultar su página del man: man at.

Tutorial elaborado por Nacx para ADSLAyuda.com

Este sitio web utiliza cookies para mejorar su experiencia. Asumiremos que estás de acuerdo, pero puedes optar por no seguir si lo deseas. Aceptar Leer más