Que es un Cron Job?
Comencemos por definir que es un Cron, en computación es un administrador de servicios que ejecuta un servicio o varios programados para ejecutarse a ciertos intervalos regulares (cada hora, cada día, cada mes, etc.) esto en sistemas operativos del tipo Unix (Linux y sus distribuciones, Mac OS, etc.) Su nombre deriva de la palabra griega chronos (χρόνος) que significa tiempo.
Un Cron Job (CronJob) es una tarea (job) guardada en los crontabs que el Cron verifica cada minuto para ver si existe alguna tarea para realizarse, todo esto se realiza en segundo plano.
Cómo nota adicional un crontab son loa archivos donde se guardan las listas de tareas y otras instrucciones para ser usadas por el demonio (deamon) del Cron.
Uso de los Cron Jobs en Linux Ubuntu
En Ubuntu, cron es el “Administrador de tareas” en segundo plano (demonio) que ejecuta programas a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el archivo crontab.
Los usuarios habilitados para crear su archivo crontab se especifican en el archivo /etc/cron.d/cron.allow. De manera análoga, los que no lo tienen permitido figuran en /etc/cron.d/cron.deny, o /etc/cron.deny, dependiendo de la versión de unix.
Cómo programar una tarea en crontab en Linux Ubuntu
Nada mejor que un ejemplo del archivo crontab
Con el comando:
Habirmos el editor de cronjobs, permitiendo agregar, eliminar o editar cron jobs facilmente. La sintaxis de ejecucion de comandos debe ser la siguiente:
Código HTML:
* * * * * comando_a_ejecutar
- - - - -
| | | | |
| | | | +—– dia de la semana (0 – 6) (Domingo=0)
| | | +——- mes(1 – 12)
| | +——— dia del mes (1 – 31)
| +———– hora (0 – 23)
+————- minuto (0 – 59)
En donde determinaremos el tiempo de ejecucion, y el comando a ejecutar.
Con el comando:
Listaremos la cantidad de comandos que tiene el usuario con el que estemos logeados en la tarminal.
Con el comando:
Código HTML:
crontab -u usuario -l
Listamos la cantidad de comandos que tiene un usuario determinado.
Ejemplos de cron jobs en linux
Código HTML:
24 12 * * 1 /usr/bin/who >> /home/hola.txt
Ejecuta la orden who todos los lunes a las 12:24 y guarda la salida en el archivo hola.txt
Para especificar dos o más valores en cada variable, estas deben estar separadas por comas, siguiendo con el ejemplo anterior:
Código HTML:
0,24 * * * 1 /usr/bin/who >> /home/hola.txt
Ejecuta la orden who todos los lunes cada media hora y guarda la salida en el archivo hola.txt
Si queremos que se ejecute cada 15 minutos sería:
Código HTML:
0,15,30,45 * * * * /usr/bin/who >> /home/quien.tex
o
Código HTML:
*/15 * * * * /usr/bin/who >> /home/quien.tex
En este ejemplo veremos como pasarle mas de un comando al cron y de paso como puede programarse una descarga:
Código HTML:
30 21 * * * cd /media/sda7/dexter/distributions/isos;wget http://hola.com/archivo_a_descargar.loquesea
Este otro es para programar el apagado de la PC. En este caso todos los sábados a las 9:30 pm.
Código HTML:
30 21 * * 6 /sbin/shutdown -h now
Si queremos ejecutar comandos con privilegios de root, simplemente basta con ingresar a la cuenta root, y ejecutar el comando
Y agregar el nuevo cronjob