Cron

De doc.ubuntu-es
Revisión a fecha de 21:41 17 abr 2008; RagonichaFulva (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Cron es un programa o demonio (daemon) que permite ejecutar otros programas o scripts en un lapso de tiempo y una periodicidad especificada por el usuario. Su comportamiento esta regulado por su archivo de configuración, que se llama crontab. Cada usuario del sistema posee un archivo crontab personalizado y sólo el usuario root puede modificar el archivo crontab de otro usuario. Si se desea agregar un archivo crontab, es necesario entrar ("logearse") primero como ese usuario.


Cómo editar el archivo crontab

Un usuario sólo puede hacer uso de crontab si su nombre aparece en:

/etc/cron.allow

Si este archivo no existe, el usuario puede usar crontab a menos que su nombre aparezca en:

/etc/cron.deny.

La sintaxis del archivo crontab es muy clara y rígida. Hay seis campos por cada linea, y cada campo está separado por un espacio. Los primeros cinco campos específican el momento preciso de ejecución, mientras que el sexto campo es el propio comando o script que se ejecutará. Los primeros cinco campos son:

 *     *     *     *     *      /commando/a/ejecutar
 -     -     -     -     -
 |     |     |     |     |
 |     |     |     |     +----- día de la semana (0 - 6) (dom = 0)
 |     |     |     +------- mes (1 - 12)
 |     |     +--------- día del mes (1 - 31)
 |     +----------- hora (0 - 23)
 +------------- minuto (0 - 59)


Para editar el archivo crontab sólo es necesario abrir una consola de comandos y ejecutar el comando:

crontab -e


Si es la primera vez que lo ejecutamos, veremos un archivo vacío en el editor nano (editor de textos en consola de Gnome en Ubuntu). En este caso, si agregamos la siguiente línea al archivo:

45 19 * * * rm /home/NombreDeUsuario/tmp/*

estaremos indicando a cron que el contenido del directorio /home/NombreDeUsuario/tmp/ será borrado todos los días a las 7:45 PM. Si queremos conservar esta instrucción, tendremos que guardar el archivo pulsando la tecla F3, y salir de nano pulsando la tecla F2. Veremos el mensaje:

crontab:installing new crontab 


que indica que una nueva tarea ha sido agregada a cron. Si ejecutamos el comando:

crontab -l


empleando la opción -l, veremos las tareas estipuladas en crontab. En este caso sólo veríamos la tarea que acabamos de agregar, pero si nuestro crontab ya tenía tareas programadas también aparecerían.

La opción -r elimina el archivo crontab del usuario, o lo que es lo mismo, todas la tareas programadas en nuestro crontab, así que no se usa muy a menudo, y cuando se usa ha de emplearse con mucha precaución.


Clip.png Si queremos usar otro editor de consola que no sea nano (como por ejemplo, vim, es necesario exportar la variable de ambiente EDITOR. Para ello, podemos escribir en consola de comandos y escribir:
export EDITOR="vim"

Si deseamos cambiar de editor de manera permamente, tendremos que agregar esta misma línea al archivo:

$HOME/.bashrc.


Habitualmente, cron envía un e-mail de notificación al usuario propietario de crontab. Esto puede llegar a ser molesto, sobre todo si tenemos un cron que se ejecuta con mucha frecuencia. Para deshabilitar el envio de este e-mail agregaremos lo siguiente al final de cada línea del crontab:

>/dev/null 2>&1


Algunos ejemplos

Algunos ejemplos de líneas que podemos añadir a crontab son:

  • Para el comando ping al equipo 192.168.0.1 cada minuto, de cada hora, de cada día, de cada mes. Es decir, hacer un ping a cada minuto (nótese la terminación en >/dev/null 2>&1 para no recibir la notificación).
* * * * * /sbin/ping -c 1 192.168.0.1 >> /dev/null


  • Para ejecutar lo mismo, pero que el ping sólo se ejecute los días laborables de la semana (de Lunes a Viernes) a las 8:00 PM en punto y sólo durante el mes de octubre.
0 20 * 10 1-5 /sbin/ping -c 1 192.168.0.1 >> /dev/null


  • Para ejecutar un script de respaldo en python de lunes a domingo a medianoche (0:00 AM) los días 1, 15 y 28 de cada mes (para asegurarnos que en febrero también se haga)
0 0 1,15,28 * * /home/mmonrdz/scripts/respaldar.py


  • Para ejecutar un script que actualiza la base de datos de cotizaciones todos los lunes a las 7:00 AM, 7:50 AM, 8:00 AM y 8:50 AM sin enviar el e-mail de notificación.
0,50 7,8 * * 1 /home/mmonrdz/scripts/dbcotiza.pl >/dev/null 2>&1


Fuentes

Herramientas personales