Alternativa al Programador de tareas
El Programador de tareas ejecuta comandos. No te da una planificación que puedas operar.
Dagu se instala como servicio de Windows y aporta lo que el Programador de tareas nunca tuvo: dependencias entre trabajos, reintentos, registros por paso, historial de ejecuciones y una única consola de navegador para todos los servidores en lugar de una sesión RDP por máquina.
# nightly-close.yaml
schedule: "0 2 * * *"
max_active_runs: 1
shell: powershell -NoProfile
steps:
- id: export
run: .\scripts\Export-Sales.ps1
retry_policy:
limit: 2
interval_sec: 300
- id: transform
run: .\scripts\Transform-Sales.ps1
depends: export
- id: load
run: .\scripts\Import-ToCore.ps1
depends: transform
handler_on:
failure:
run: .\scripts\Notify-Failure.ps1
mail_on:
failure: trueSe instala como servicio de Windows
Pasos en PowerShell, pwsh y cmd.exe
Definiciones de trabajos en YAML versionado
Una consola web para todos los servidores
At a glance
Programador de tareas y Dagu en Windows Server
Declaradas con depends; un fallo detiene los pasos posteriores.
Ninguna. El orden se aproxima con las horas de inicio.
Reintentos, manejadores de recuperación y notificación por correo.
Un código de último resultado que revisa una persona.
YAML revisado en Git y desplegable en cualquier host.
Configuración gráfica por máquina, exportable como XML.
Consola de navegador con historial y registros por paso.
Complemento MMC local y registro de eventos, por servidor.
In depth
Where each tool fits
Un orden expresado con horas no es una dependencia
El Programador de tareas lanza una tarea a una hora. No existe la idea de que una tarea espere a otra, así que el orden se expresa estimando duraciones y separando las horas de inicio.
- La tarea de las 02:30 se ejecuta haya tenido éxito o no la de las 02:00, y normalmente consume lo que esta dejó
- depends declara el orden directamente: un paso anterior fallido detiene el trabajo posterior en lugar de corromperlo
- Los trabajos realmente independientes se ejecutan en paralelo en vez de separarse por precaución
Fallos que se anuncian solos
Una tarea fallida deja un código de último resultado y espera a que alguien mire. La mayoría de los equipos se enteran a la mañana siguiente, por la persona que está aguas abajo de los datos.
- retry_policy reintenta lo transitorio antes de despertar a nadie
- handler_on.failure ejecuta un trabajo de recuperación y mail_on envía la notificación
- Cada ejecución conserva stdout y stderr por paso, en lugar de un código de retorno y lo que llegara al registro de eventos
Definiciones revisables y una consola accesible
Las definiciones del Programador viven en la interfaz de una máquina. Exportarlas produce XML que nadie revisa, y comprobar diez servidores significa diez sesiones remotas.
- Los flujos son YAML en Git: un cambio de planificación es una pull request y pruebas y producción comparten la misma definición
- La interfaz web muestra ejecuciones actuales e históricas desde cualquier navegador, sin RDP por servidor
- PowerShell, pwsh y cmd.exe están disponibles, así que los scripts existentes se trasladan sin cambios
FAQ
Practical questions before adopting Dagu
¿Dagu funciona como servicio de Windows?
Sí. El instalador de PowerShell puede registrarlo como servicio de Windows mediante un envoltorio WinSW con versión fijada: arranca con la máquina y aparece en Get-Service como cualquier otro servicio. Hay binarios de Windows para amd64, 386 y arm64.
¿Siguen funcionando mis scripts de PowerShell y batch?
Sí. Un paso ejecuta el comando mediante PowerShell, pwsh o cmd.exe, elegible por flujo o por paso. Si no se configura shell, Dagu prefiere PowerShell, luego pwsh y luego cmd.exe. Los scripts se invocan igual que lo hacía el Programador de tareas.
¿Puede un solo Dagu gestionar trabajos en varios servidores Windows?
Sí, de dos formas. Los workers pueden ejecutarse en otras máquinas y recibir trabajo de un coordinador, y los nodos remotos permiten que una interfaz web cambie entre despliegues de Dagu separados. En ambos casos la consola es un navegador y no un escritorio remoto.
¿Qué versiones de Windows son compatibles?
Windows Server 2019 y posteriores es el objetivo seguro. Las versiones antiguas sin AF_UNIX siguen ejecutando flujos, pero el socket de estado en vivo y control de parada no está disponible, así que Dagu registra un aviso y continúa sin él.
Next step
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.