Linux & TerminalAdministracion AvanzadaLección 9 de 12
Cron y Automatizacion de Tareas
Cron es el planificador de tareas de Linux. Permite ejecutar comandos o scripts automaticamente a intervalos regulares. Es esencial para backups, limpieza de logs, reportes automaticos y cualquier tarea repetitiva.
# CRONTAB: el archivo de tareas programadas
# Editar tu crontab
crontab -e
# Ver tus tareas actuales
crontab -l
# FORMATO de una linea cron:
# ┌──── minuto (0-59)
# │ ┌──── hora (0-23)
# │ │ ┌──── dia del mes (1-31)
# │ │ │ ┌──── mes (1-12)
# │ │ │ │ ┌──── dia de la semana (0-7, 0 y 7 = domingo)
# │ │ │ │ │
# * * * * * comando
# Ejemplos:
# Cada minuto
* * * * * /home/user/check.sh
# Cada dia a las 3:00 AM
0 3 * * * /home/user/backup.sh
# Cada hora en punto
0 * * * * /home/user/monitor.sh
# Lunes a viernes a las 9:00 AM
0 9 * * 1-5 /home/user/reporte.sh
# Cada 15 minutos
*/15 * * * * /home/user/healthcheck.sh
# Primer dia de cada mes a medianoche
0 0 1 * * /home/user/reporte_mensual.sh
# PATRONES COMUNES de cron
# Backup de base de datos cada noche a las 2am
0 2 * * * mysqldump -u root midb > /backups/db_$(date +\%Y\%m\%d).sql
# Limpiar logs viejos cada domingo a las 4am
0 4 * * 0 find /var/log -name "*.log" -mtime +30 -delete
# Renovar certificados SSL (cada dia a las 3:30am)
30 3 * * * certbot renew --quiet && systemctl reload nginx
# Reiniciar app si no responde (cada 5 minutos)
*/5 * * * * curl -sf http://localhost:3000/health || systemctl restart mi-app
# REDIRIGIR salida de cron
# Guardar logs de la tarea
0 3 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
# Sin salida (silencioso)
0 3 * * * /home/user/script.sh > /dev/null 2>&1
# Enviar output por email (requiere mailutils)
MAILTO="admin@empresa.com"
0 8 * * 1 /home/user/reporte_semanal.sh
# COMANDO AT: ejecutar algo UNA sola vez en el futuro
# Ejecutar en 10 minutos
echo "/home/user/deploy.sh" | at now + 10 minutes
# Ejecutar a las 5pm
echo "/home/user/reporte.sh" | at 5:00 PM
# Ejecutar manana a medianoche
echo "/home/user/backup.sh" | at midnight tomorrow
# Ver tareas pendientes de at
atq
# 3 Mon Jun 23 17:00:00 2026 user
# Cancelar tarea de at
atrm 3
# SYSTEMD TIMERS: alternativa moderna a cron
# Archivo: /etc/systemd/system/backup.timer
# [Unit]
# Description=Backup diario
#
# [Timer]
# OnCalendar=*-*-* 03:00:00
# Persistent=true
#
# [Install]
# WantedBy=timers.target
# Activar el timer
sudo systemctl enable --now backup.timer
# Ver timers activos
systemctl list-timers
ConsejoErrores comunes con cron: 1) Olvidar la ruta completa de los comandos (usa /usr/bin/node en vez de solo node). 2) No agregar 2>&1 para capturar errores. 3) Olvidar que cron no carga tu .bashrc, asi que las variables de entorno no estan disponibles.
Practica esta lección
Resuelve los ejercicios del curso de Linux & Terminal en la app, gratis y con corrección automática.
Empezar a practicar