Programar tareas en Linux
Si alguna vez has querido automatizar tareas en tu sistema Linux, seguro que te interesará conocer cron y crontab. Son herramientas esenciales para programar la ejecución de comandos y scripts en momentos específicos sin necesidad de realizar una intervención manual. En este artículo abordaremos de una forma sencilla qué son, cómo funcionan y cómo puedes usarlos para hacer tu vida más fácil.
¿Qué es cron?
Cron es un demonio ,o lo que es lo mismo, un programa que se ejecuta en segundo plano, que se encarga de ejecutar comandos o scripts en momentos programados. Si necesitas realizar una tarea repetitiva, como hacer copias de seguridad, actualizar software o eliminar archivos temporales, cron es un estupenda opción ya que funciona con los archivos crontab, donde se configuran las tareas a realizar.
¿Qué es crontab?
Crontab, por otra parte, es el archivo donde se definen las tareas que cron ejecutará. Cada usuario en el sistema puede tener su propio archivo crontab con las tareas personalizadas eso sin excluir que además hay un crontab del sistema (/etc/crontab) que permite programar tareas para todos los usuarios.
Sintaxis de crontab
Para programar una tarea en crontab, necesitamos seguir la siguiente estructura:
MINUTO HORA DÍA_MES MES DÍA_SEMANA COMANDO
Estos campos han de detallarse en dicho orden cada uno solo acepta los valores que te indico a continuación:
- MINUTO (0-59)
- HORA (0-23)
- DÍA_MES (1-31)
- MES (1-12)
- DÍA_SEMANA (0-7, donde 0 y 7 son domingo)
- COMANDO: el script o comando que quieres ejecutar
Te dejo un ejemplo para que veas como construye una automatización de copias de seguridad todos los lunes a las 14:30 sin tener en cuenta ni el día numérico ni el mes
30 14 * * 1 /home/usuario/backup.sh
Cómo editar el crontab
Para abrir y editar el crontab de un usuario, puedes hacerlo utilizando el comando crontab -e, esto abrirá el editor predeterminado de tu sistema, normalmente nano o vim, donde podrás editar y añadir lo que necesites.
Para editar el crontab del sistema tendrás que acceder al archivo /etc/crontab con permisos de superusuario.
Algunos ejemplos prácticos
Ejecutar un script cada día a las 8:00 AM
0 8 * * * /home/usuario/script.sh
Reiniciar un servicio cada domingo a las 3:00 AM
0 3 * * 0 systemctl restart nombreServicio
Limpiar archivos temporales todos los domingos a las 4:00 AM
0 4 * * 0 rm -rf /tmp/*
Enviar un correo con un informe todos los viernes a las 18:00
0 18 * * 5 mail -s "Informe semanal" usuario@correo.com < /home/usuario/informe.txt
Actualizar automáticamente el sistema cada noche a las 2:00 AM
0 2 * * * sudo apt update && sudo apt upgrade -y
Ver y eliminar tareas programadas
Para ver las tareas activas en crontab utiliza el comando crontab -l, si lo que quieres es eliminarlas todas lo puedes hacer con crontab -r, si en cambio sólo quieres eliminar una tarea en concreto, edita el crontab con crontab -e y borra la línea correspondiente.
Diferentes usuarios
Hemos de saber que cada usuario tiene su propio crontab pero que el administrador puede programar tareas globales editando /etc/crontab. La sintaxis en este archivo incluye un campo extra para especificar el usuario:
MINUTO HORA DÍA_MES MES DÍA_SEMANA USUARIO COMANDO
Por ejemplo si queremos que se ejecute el script como usuario root cada día a las 7:00 AM podemos hacer lo siguiente:
0 7 * * * root /usr/bin/actualizar_sistema.sh
Tal como ya has visto, usar cron y crontab en Linux te permite automatizar procesos de manera eficiente desde pequeñas tareas diarias hasta complejas operaciones de mantenimiento, por lo que cron es una herramienta poderosa con mucho potencial puesto que con una buena planificación, puedes reducir tareas repetitivas y mejorar la administración de tu sistema.

I really appreciate this post. I¦ve been looking everywhere for this! Thank goodness I found it on Bing. You have made my day! Thank you again