Cron 替代方案

保留 cron 的简单,再补上生产任务真正需要的控制能力。

Dagu 让调度依然贴近你的脚本,同时补上依赖图、重试、日志、历史、手动重跑和 Web UI。

从一行 cron 到一个工作流
name: nightly-ops
schedule: "0 2 * * *"

steps:
  - id: extract
    run: python scripts/extract.py

  - id: transform
    run: ./bin/transform
    retry_policy:
      limit: 3
    depends: [extract]

  - id: notify
    run: ./scripts/slack-success.sh
    depends: [transform]

YAML 中使用 cron 风格调度

用步骤依赖代替 shell 串联

无需 SSH 就能重跑失败步骤

在 Web UI 中查看历史和日志

At a glance

Cron 与 Dagu

依赖关系
Dagu

原生步骤图。

Typical alternative

Shell 链、锁文件和包装脚本。

重试
Dagu

步骤级重试策略。

Typical alternative

自定义循环或手动重跑。

可见性
Dagu

Web UI、日志、状态和历史。

Typical alternative

系统日志和手工约定。

In depth

Where each tool fits

01

一旦任务之间有关联,cron 就会变复杂

当脚本需要重试、输出保存、依赖顺序或可读历史时,cron 很快就会演变成一堆包装脚本。

  • 把每条命令建模为一个命名步骤
  • 用依赖关系代替长 длинные shell 链
  • 通过 Web UI 查看失败输出并重跑
02

不需要平台级迁移

Dagu 直接运行你已有的脚本。第一次迁移只需要从一个夜间任务开始。

  • 继续使用 Bash、Python、Go、Java、PHP 或 Perl
  • 把调度搬进可版本化的 YAML
  • 逐步为工作流加上超时和重试策略
03

默认就有运维可见性

Dagu 把原本散落在 syslog、自定义文件和团队经验里的状态集中起来。

  • 查看当前状态、历史和日志
  • 无需登录主机即可手动运行
  • 用通知和后续步骤处理失败

FAQ

Practical questions before adopting Dagu

Dagu 支持 cron 语法吗?

支持。你可以继续使用熟悉的 cron 表达式,同时获得工作流级别的状态与步骤控制。

需要重写现有 cron 脚本吗?

不需要。把原有命令放进 Dagu 步骤里,再逐步添加依赖、重试和通知即可。

需要 Kubernetes 吗?

不需要。Dagu 可以先在普通机器上单进程运行,需要时再扩展到分布式执行。

Next step

Start with one workflow.

Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.