⚙️ Automatización

Generador de Tareas Programadas

Cree y administre tareas programadas con la sintaxis cron correcta y scripts de shell

★★☆ Intermedio 15 min 13 de enero de 2025

Caso de Uso

Configurar tareas programadas requiere entender la sintaxis cron y escribir scripts confiables. Cowork puede ayudar a generar trabajos cron correctamente formateados con sus scripts correspondientes.

Ejemplo de Prompt

Necesito configurar varias tareas programadas en mi Mac:

1. Diario a las 2 AM: Respaldar ~/Documents en disco externo
2. Cada lunes a las 9 AM: Generar informe semanal desde ~/Data/logs/
3. Cada 6 horas: Sincronizar carpeta local con un servidor remoto
4. Primero de cada mes: Archivar archivos antiguos (>90 días) de ~/Downloads

Por favor:
- Genere las entradas de cron
- Cree los scripts de shell para cada tarea
- Incluya registro de errores
- Guarde todo en ~/Scripts/scheduled/

Qué Hace Cowork

  1. Análisis de Horarios: Convierte requisitos a expresiones cron
  2. Generación de Scripts: Crea scripts de shell para cada tarea
  3. Manejo de Errores: Agrega registro y notificaciones de errores
  4. Documentación: Genera instrucciones de configuración
  5. Creación de Archivos: Guarda scripts y entradas de crontab

Salida de Ejemplo

# ~/Scripts/scheduled/crontab_entries.txt

# Respaldo diario a las 2 AM
0 2 * * * /Users/you/Scripts/scheduled/daily_backup.sh >> /var/log/backup.log 2>&1

# Informe semanal cada lunes a las 9 AM
0 9 * * 1 /Users/you/Scripts/scheduled/weekly_report.sh >> /var/log/reports.log 2>&1

# Sincronización cada 6 horas
0 */6 * * * /Users/you/Scripts/scheduled/sync_remote.sh >> /var/log/sync.log 2>&1

# Archivo mensual el día 1 a las 3 AM
0 3 1 * * /Users/you/Scripts/scheduled/monthly_archive.sh >> /var/log/archive.log 2>&1
#!/bin/bash
# ~/Scripts/scheduled/daily_backup.sh

set -e
LOG_PREFIX="[$(date '+%Y-%m-%d %H:%M:%S')] RESPALDO:"
BACKUP_SRC="$HOME/Documents"
BACKUP_DST="/Volumes/ExternalDrive/Backups"
BACKUP_NAME="documents_$(date '+%Y%m%d').tar.gz"

echo "$LOG_PREFIX Iniciando respaldo..."

if [ ! -d "$BACKUP_DST" ]; then
    echo "$LOG_PREFIX ERROR: Destino de respaldo no montado"
    exit 1
fi

tar -czf "$BACKUP_DST/$BACKUP_NAME" -C "$HOME" Documents

# Mantener solo los últimos 7 respaldos
cd "$BACKUP_DST"
ls -t documents_*.tar.gz | tail -n +8 | xargs -r rm

echo "$LOG_PREFIX Respaldo completado: $BACKUP_NAME"

Referencia de Sintaxis Cron

┌───────────── minuto (0 - 59)
│ ┌───────────── hora (0 - 23)
│ │ ┌───────────── día del mes (1 - 31)
│ │ │ ┌───────────── mes (1 - 12)
│ │ │ │ ┌───────────── día de la semana (0 - 6)
│ │ │ │ │
* * * * *

Consejos

  • Pruebe los scripts manualmente antes de programarlos
  • Use rutas absolutas en los scripts
  • Incluya manejo de errores apropiado
  • Considere usar launchd en macOS para mayor control
  • Agregue notificaciones por correo para fallos