Cron alternative
Keep cron's simplicity. Add the controls production jobs need.
Dagu keeps schedules close to your scripts while adding dependency graphs, retries, logs, history, manual reruns, and a web UI.
name: nightly-ops
schedule: "0 2 * * *"
steps:
- name: extract
command: python scripts/extract.py
- name: transform
command: ./bin/transform
depends: extract
retryPolicy:
limit: 3
- name: notify
command: ./scripts/slack-success.sh
depends: transformCron-style schedules in YAML
Step dependencies instead of shell chains
Retry failed steps without manual SSH sessions
Run history and logs in a web UI
Cron is simple until jobs depend on each other
Once a scheduled script needs retries, output capture, dependency order, or human-friendly history, cron becomes a pile of wrapper scripts.
- Model each command as a named step.
- Use dependencies instead of long shell chains.
- Inspect failed output and rerun from the web UI.
No platform migration required
Dagu runs the scripts you already have. The first migration can be one nightly job, not a platform rewrite.
- Keep existing Bash, Python, Go, Java, PHP, or Perl jobs.
- Move schedules into versioned YAML.
- Add timeouts and retry policies one workflow at a time.
Operational visibility by default
Dagu captures the run state that cron leaves scattered across syslog, custom files, and tribal knowledge.
- See current status, history, and logs.
- Trigger manual runs without logging into the host.
- Use notifications and downstream steps for failure handling.
Cron vs. Dagu
FAQ
Practical questions before adopting Dagu
Can Dagu use cron syntax?
Yes. Dagu workflows can define schedules with familiar cron expressions while adding workflow-level execution state and step controls.
Do I have to rewrite cron scripts?
No. Put the existing command in a Dagu step, add a schedule, and then add dependencies, retries, and notifications as needed.
Does Dagu need Kubernetes?
No. Dagu can run as a single process on a normal machine. Distributed execution is available when you need it.
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.