Al programador de tareas en GNU/Linux se le conoce con el nombre de CRON, y al editor de las tareas se le llama CRONTAB. Cron permite programar una tarea ( por ejemplo un comando, programa o shell script) para ejecutarlos periódicamente o una única vez. Podremos programar las tareas de forma horaria, diaria, semanal, mensual, a una fecha y hora determinada, etc...
La herramienta Cron es muy útil y es usada por multitud de programas para realizar las tareas programadas, como por ejemplo los rotados de logs, monitorización de sistemas, chequeos de filesystem, etc..
⬇️ Compra en Amazon el hardware que utilizo ⬇️
- 💻 Ordenador Portátil: Descúbrelo aquí
- 🖥️🖥️ Monitores: Mis 2 súper monitores
- ⌨️ Teclado: Mini teclado + Lector DNIe
- 🖱️ Ratón: Mi ratón programable
- 🎧 Auriculares: Súper Auriculares TOP!
- 🖨️ Impresora: Mi fantástica impresora
- 🗄️ NAS Backup: Mi NAS para Backups
- 🔌 HUB USB: Mi HUB para puertos USB
- 📱 Smartphone: Mi Smartphone
- 📲 Tablet: Mi tablet para viajes
- ⌚ Smartwatch: Mi Smartwatch favorito
- 📹 Cámara deportiva: Mi cámara para deportes
1.- OBJETIVOS
Realizar programaciones de scripts/programas con cualquier tipo de periodicidad.
2.- AÑADIR UNA TAREA PROGRAMADA DESDE COMANDOS
Para añadir una nueva tarea, podemos usar el comando crontab desde la líea de comandos. Para crear una nueva tarea, escribe el siguiente comando para crear la tarea con tu usuario actual:
root@debian:~# crontab -e
Si queremos crear una nueva tarea "suplantando" la identidad de otro usuario, en su lugar debemos escribir lo siguiente:
root@debian:~# sudo crontab -u -e
La estructura de cada rogramación tiene la siguiente sintáxis.
A continuación detallo con un sencillo gráfico como está estructurada la sintáxis de las programaciones:
Una vez que tengamos añadida nuestra nueva tarea, presionamos CRTL+X para salvar los cambios y salir del editor (si estamos usando vi). En este momento, las nuevas tareas que hayamos creado y/ó editado pasarán a estar como activas y se ejecutarán según la planificción que tenga cada una de ellas. Para visualizar la lista de tareas qu etenemos en nuestro usuario debemos ejecutar el siguiente comando:
root@debian:~# crontab -l
3.- AÑADIR UNA TAREA PROGRAMADA DESDE GUI
Si queremos hacer este trabajo desde un entorno gráfico amigable, en GNOME disponemos de la herramienta gnome-scheduler. Si queremos hacer este trabajo desde KDE, disponemos de la herramienta KDE Task Manager.
GNOME Scheduler
KDE Task Manager
4.- EJEMPLOS DE DIFERENTES PROGRAMACIONES
A continuación dejo unos ejemplos muy útiles con diferentes formas de programación de tareas:
- * * * * * /home/raulprieto/scripts/script.sh: ejecución cada minuto.
- 0 * * * * /home/raulprieto/scripts/script.sh: ejecución cada hora, en el minuto 0.
- 0 4 * * * /home/raulprieto/scripts/script.sh: ejecución diaria a las 4 de la mañana.
- 0 9,20 * * * /home/raulprieto/scripts/script.sh: ejecución a las 9 de la mañana y a las 20 de la tarde (2 veces al dia).
- 0 9-20 * * * /home/raulprieto/scripts/script.sh: ejecución cada hora desde las 9 de la mañana hasta las 20 de la tarde.
- 0 9-20 * * 1-5 /home/raulprieto/scripts/script.sh: ejecución cada hora entre las 9 de la mañana y las 20 de la tarde de lunes a viernes.
- */10 * * * * /home/raulprieto/scripts/script.sh: ejecución cada 10 minutos.
USO DE VARIABLES
Con el fin de evitar la repetición de muchas variables y malgastar nuestro tiempo en escribir las tareas, crontab nos permite también el uso de variables para mejorar un poco tanto la estructura de la lista de Jobs como nuestro trabajo en la edición/creación de las mismas. El siguiente ejemplo muestra como se usa una declaración de variable y una tarea programada usando dicha variable:
directorio=/home/raulprieto/backups
00 10 * * * rm -f ${directorio}/backup.old
ENJOY!