Volver al índice


crontab

configurar tareas para que se ejecuten automáticamente en el sistema

# crontab -e (editar el archivo crontab, si no existe se crea)

$ crontab -e (idem para el usuario no root)

# crontab -l (Muestra el contenido para root)

# crontab -l -u usuario (muestra el de usuario)

$ crontab -l (idem para el usuario no root)

# crontab -r (Borra el contenido de crontab)

Crontab consta de 6 campos separados por un espacio que indican:

minuto (0-59), hora (0-23), dia del mes (1-31), mes (1-12), dia de la semana (0-6, domingo=0), y comando a ejecutar. Un asterisco * como valor en los primeros cinco campos, indicará todos (todos los minutos, todas las horas ...)

01 * * * *       (Se ejecuta el primer minuto de cada hora todos los dias)

20 9 * * *       (a las 9:20 de la mañana todos los dias)

20 21 * * *     (a las 9:20 (21:20) de la tarde todos los dias)

01 6 * * 1      (a las 6:01 de todos los lunes)

* * 1 1 *         (todos los minutos de todas las horas del 1 de enero)

00 12 * * 0     (a las doce en punto de todos los domingos)

@reboot (Cada reinicio)

También es posible especificar listas en los campos:

01 15 * 1-4 1,2,3,4   (a las 3:01 de la tarde de lunes a viernes de enero a abril)

*/15 * 1-15 *     (cada 15 minutos  entre el 1 y el 15 de todos los meses)

*/5 * * * * cp /etc/resolv.conf.bak /etc/resolv.conf  (Ejecutar cada 5 minutos el comando especificado.)

$ 0 8 * * * env DISPLAY=:0.0 vlc /home/usuario/musica/archivo.mp3 (Programar que cada dia a las 8 se abra un mp3 con el vlc)

El archivo donde se guardan las tareas a realizar es:

$ nano /var/spool/cron/usuario

También pueden añadirse o modificarse en este archivo.

1.-

En ocasiones, y especialmente con Archlinux, crontab cambia la codificación de caracteres de los scripts. Ejecutados directamente funcionan correctamente pero al colocarlos en el cron se muestran con caracteres estraños. La causa son las variables de entorno asociadas a la máquina y al demonio del cron. Para solucionar el problema:

# nano /etc/environment

Y añadir la linea:

LANG=es_ES.UTF-8

Reiniciar cron:

# /etc/rc.d/crond restart

2.-

Una forma de controlar si un script colocado en el cron funciona correctamente es:

$ env -i /home/user/script.sh

La condición de ejecución es similar a como lo hace cron.


Volver al índice