cron - Automatizando tareas


Cron es un servidor que permite programar la ejecución de comandos.

Este programa lee un archivo de fechas y órdenes llamado "crontab" creado por cada usuario para ser ejecutado. Con tu crontab individual le puedes decir al sistema "ejecuta este comando en esta fecha y a esta hora", para efectos de comprensión lo podemos comparar con la programación de una videocasetera para que se encienda a determinada hora y comience a grabar determinado canal.

Tu crontab individual se puede grabar en cualquier archivo que elijas, por ejemplo, puedes poner en tu directorio inicial (/home/usuario) un archivo llamado "cronjobs" con las tareas a realizar por cron.

En los siguientes párrafos se explica el formato del archivo crontab (tomado del manual de cron "man 5 crontab", mismo que puede ser visto en el shell).

Cada línea en tu crontab será una orden para cron. Las líneas que comiencen con un # son consideradas como comentarios y son omitidas.

El formato de línea para cron incluye 5 campos de tiempo seguidos por un comando. Se ejecutan los comandos cuando la fecha y hora especificadas en los campos de fecha coinciden con la fecha y hora actuales. La hora se maneja en formato de 24 horas.

Los 5 campos de tiempo se enlistan:


Campo   Concepto            Valores Permitidos  
-----   ----------------    -------------------------
  1     minuto              0-59  
  2     hora                0-23  
  3     día del mes         0-31  
  4     mes                 1-12
  5     día de la semana    0-7   (0 o 7 es domingo)
Un campo puede ser un asterisco (*), que indica que todos los valores en el rango son aceptables.

El comando que deseas ejecutar es el sexto campo en una línea de cron, por ejemplo:

15 1 * * *  <COMANDO>
Explicación:
El primer campo (15) coincide cuando la hora ha avanzado 15 minutos
El segundo campo (1) coincide cuando la hora sea "1" (AM)
El tercer campo (*) coincide todos los días del mes
El cuarto campo (*) coincide todos meses del año
El tercer campo (*) coincide todos los días de la semana

Por lo tanto, lo anterior se resume a: ejecuta el comando <COMANDO> a la 1:15 AM todos los días del mes, durante todo el año.

Ejemplos:

40 23 1 * * <COMANDO>         Ejecuta el comando <COMANDO> el primer día de cada mes a las 11:40 PM
0 0 19 8 * <COMANDO>         Ejecuta el comando <COMANDO> a la medianoche (12 AM) del 18 de agosto
0,10,20,30,40,50 * * * * <COMANDO>         Ejecuta el comando <COMANDO> cada 10 minutos todos los días


Después de que hayas definido los trabajos en crontab, es necesario indicarle a cron dichos trabajos.
Supongamos que el archivo lo nombraste "cronjobs", entonces hay que teclear:

[falcon@box falcon]$ crontab cronjobs
Lo anterior colocará las líneas de crontab en el sistema cron.

Si quieres revisar las tareas asignadas a cron, teclea crontab -l
Si quieres borrar las tareas asignadas a cron, teclea crontab -r

NOTA: cada vez que cron ejecute tu crontab, te enviará un correo indicándotelo. Si defines tareas a ser realizadas muy frecuentemente (por ejemplo, cada 10 minutos) muy pronto se llenará tu buzón con todos estos correos. Para evitar que cron te envíe dichos correos hay que agregar al final de cada línea lo siguiente: >/dev/null 2>&1

Por ejemplo:
0,10,20,30,40,50 * * * * <COMANDO> >/dev/null 2>&1