Automatización de tareas con cron y at
1. ¿Por qué es importante la automatización?
La automatización de tareas es básica para cualquier administrador de sistemas, especialmente en Linux. Imagina trabajar sin automatización: todas las mañanas abres la terminal y escribes el mismo comando para hacer copias de seguridad, archivarlas, enviarlas al servidor y limpiar logs antiguos. Después de una semana de esta rutina, probablemente te plantearías cambiar de trabajo... Pero no te preocupes, estamos aquí para enseñarte cómo hacer que la máquina sea tu mejor aliada.
La lección de hoy es pura magia de tiempo y tareas. Aprenderemos a automatizar procesos al nivel del sistema operativo utilizando las impresionantes herramientas cron y at. Estas utilidades ahorran un montón de tiempo y, a veces, también los nervios.
La automatización es un salvavidas para cualquier tarea rutinaria. Por ejemplo, tienes un script que genera un informe para tu jefe. Este informe se necesita todos los días a las 8:00. En vez de despertarte temprano para ejecutar el script manualmente (y arriesgarte a quedarte distraído con una taza de café y olvidarlo), puedes configurar cron para que realice esta tarea automáticamente.
cron es una herramienta para tareas regulares que se repiten a una hora específica.
at es una utilidad para tareas únicas que deben ejecutarse en un momento específico.
2. Trabajando con cron
¿Qué es cron?
cron es un demonio (proceso del sistema) que se ejecuta en segundo plano y realiza tareas programadas a una hora específica. Los horarios para estas tareas se almacenan en lo que se llama crontab, que son archivos de texto. Cada usuario en el sistema puede tener su propio crontab.
Tu primera tarea en cron
Así es como se ve un comando básico para trabajar con cron:
crontab -e
Este comando abre el crontab del usuario actual para edición. Puedes añadir tareas especificando un formato de horario.
Sintaxis del horario
Una línea en el crontab consta de seis campos:
* * * * * COMMAND
- - - - -
| | | | └─ Día de la semana (0–7, donde 0 y 7 son domingo)
| | | └── Mes (1–12)
| | └─── Día del mes (1–31)
| └──── Horas (0–23)
└───── Minutos (0–59)
Ejemplo: ejecuta echo "Hello, Linux" todos los días al mediodía:
0 12 * * * echo "Hello, Linux"
Práctica: lancemos una tarea simple
Abre tu
crontabpara editar:crontab -eAñade esta línea:
*/5 * * * * echo "Hello, world! The time is $(date)" >> ~/cron_test.logEsta tarea añadirá una línea con la hora actual al archivo
cron_test.logcada 5 minutos. Guarda el archivo y sal.Verifica si la tarea ha comenzado:
tail -f ~/cron_test.logDespués de 5 minutos deberías ver una entrada actualizada en el archivo.
Ver tareas programadas
Para verificar las tareas actuales:
crontab -l
Eliminar tareas
Para eliminar todas las tareas de crontab:
crontab -r
Ejemplos reales de uso de cron
Archivando archivos
Supongamos que deseas archivar los archivos del directorio /var/logs cada noche a las 3 de la mañana:
Escribe un script:
#!/bin/bash tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logsEstablece un horario en el
crontab:0 3 * * * /path/to/script.sh
¡Y listo! Nunca más olvidarás hacer una copia de seguridad.
Notificación de carga del sistema
Por ejemplo, deseas recibir una notificación si la carga de la CPU supera el 80%:
Escribe un script:
#!/bin/bash LOAD=$(uptime | awk '{print $10}' | sed 's/,//') if (( $(echo "$LOAD > 0.80" | bc -l) )); then echo "High CPU load: $LOAD" | mail -s "CPU Alert" you@example.com fiConfigura el horario:
*/10 * * * * /path/to/cpu_check.sh
3. Trabajando con at
at te permite ejecutar una tarea única en un momento específico. A diferencia de cron, las tareas en at no se repiten. Esto es útil para tareas del tipo "haz esto mañana a las 9 de la mañana".
Una tarea simple con at
Aquí tienes un ejemplo de cómo programar una tarea:
echo "echo '¡Hola, Linux!'" | at now + 1 minute
Este comando ejecutará el comando echo '¡Hola, Linux!' en un minuto.
Puedes especificar una hora y fecha exactas:
echo "echo '¡Copia de seguridad completada!'" | at 10:30 AM tomorrow
Gestionando tareas con at
Después de añadir una tarea, puedes ver la lista de tareas:
atq
Ejemplo de salida:
1 Tue Oct 31 10:30:00 2023 a user
2 Tue Oct 31 11:00:00 2023 a user
Para eliminar una tarea:
atrm <job_id>
Práctica: usando at para notificaciones
Crea una tarea para notificar en 2 minutos:
echo "notify-send '¡El tiempo se acabó!'" | at now + 2 minutesRevisa la lista de tareas:
atqEspera que aparezca una ventana emergente en 2 minutos.
4. Errores típicos al trabajar con cron y at
Uno de los problemas más frecuentes es especificar una ruta incorrecta al script o comando. Recuerda que cron se ejecuta en un entorno mínimo, por lo que puede no reconocer tus variables, como PATH. La mejor práctica es usar rutas absolutas.
Por ejemplo, si quieres ejecutar un script de Python:
*/30 * * * * /usr/bin/python3 /path/to/script.py
Asegúrate también de que el script tiene permisos de ejecución:
chmod +x /path/to/script.sh
¿Dónde se puede utilizar?
Las habilidades de automatización se necesitan en casi todas las profesiones relacionadas con IT. Puedes utilizar este conocimiento:
- Para automatizar tareas rutinarias del sistema.
- Para configurar backups periódicos.
- Para monitorizar el estado de servidores.
- En entrevistas, donde suelen preguntar sobre
crony automatización.
Si trabajas en DevOps, administración de sistemas o simplemente quieres ser más productivo, entender cron y at te ayudará a destacar y ahorrar mucho tiempo.
Ahora ya sabes cómo hacer que Linux trabaje para ti. La próxima vez que alguien se queje de tareas rutinarias, simplemente sonríe, porque tú eres un maestro de la automatización.
GO TO FULL VERSION