Programar tareas periódicas con cron

El propósito principal de un PC era el de automatizar las tareas rutinarias. Si tienes que realizar una copia de seguridad de su disco a la 1:00 A.M. todos los días, ¿por qué introduces manualmente los comandos cada vez? Tiene que tener la capacidad de indicarle al ordenador que lo haga y después olvidarse de ello. En los sistemas Unix, existe cron, que ejecuta esta función de automatización. De forma resumida, puede utilizar cron mediante la ejecución del comando crontab e introducir lineas en un formato reconocido por cron.

Este formato contiene los siguientes campos :

Minutos Hora Día del mes Mes Día de la semana comando
Especificar de 0 a 59 Especificar de 0 a 23 Del 1 al 31 Del 1 al 12 o un nombre ( ene,feb,dependiendo del idioma de distribución ) Del 0 al 6,siendo 0 domingo o un nombre como lun,mar,etc. Pueden ser múltiples palabras

Por supuesto, debo imponer condiciones verdaderas o realistas en las fechas de las entradas del cron.

Por ejemplo :

Si deseo que un comando se ejecute todos los días a la 1:00 AM, borrando los ficheros del directorio /tmp, se especifican los minutos como 0 y las horas como 1. Los otros tres campos deben ser asteriscos.
0 1 * * * rm /tmp/*
Ejecutar todos los días a la 1:00 AM desde el primero hasta el 15,ambos inclusive.
0 1 1-15 * * rm /tmp/*

Para utilizar crontab puedes seguir los siguientes pasos :

  1.  Ejecutar como usuario root el comando crontab –e para editar el archivo y  añadir las lineas del cron.
  2.  Al salir del editor, los comandos se guardan. Observen su entrada de crontab introduciendo : crontab -l

Otra opción para programar tareas en fechas determinadas puede usar el comando at, por ejemplo :

$ at 2pm January 15

Para saber que comandos están en cola de espera, podemos utilizar el comando atq:

$ atq

1 2005-02-26 00:00 a root

Este comando muestra el número de tarea en la primera columna, a continuación la fecha prevista para su ejecución,una letra que especifica la cola utilizada y finalmente el propietario de la tarea.

Si queremos borrar alguna tarea programada utilizamos atrm :

$ atrm 1

Borra la tarea en la cola de espera especificando el número de tarea.