在 Ubuntu(以及一般的 Linux 系统)里,trigger 和 cron 都是“让任务在某种条件下自动执行”的机制,但它们的触发方式、使用场景和管理方式完全不同。下面从几个维度对比说明。
在 Ubuntu 中,“trigger”通常不是单一命令,而是多种机制的总称。
/etc/crontab、crontab -e/etc/cron.d/0 3 * * * /backup.sh
在 Ubuntu 中,trigger 通常由以下技术提供:
| 类型 | 示例 |
|---|---|
| systemd | OnBootSec, PathChanged, OnUnitActiveSec |
| udev | 设备插入 / 移除 |
| inotify | 文件变化 |
| dbus | 系统事件 |
| socket | 网络请求触发 |
例如 systemd path trigger:
[Path]
PathChanged=/data/input/
[Install]
WantedBy=multi-user.target
| 对比项 | cron | trigger |
|---|---|---|
| 触发依据 | 时间 | 事件 / 状态变化 |
| 精度 | 分钟级 | 实时 / 亚秒级 |
| 是否依赖时间 | 是 | 否 |
| 典型用途 | 周期任务 | 响应型任务 |
| 系统耦合度 | 低 | 高(依赖系统机制) |
| 举例 | 每天跑一次 | 文件一变就跑 |
cron 是“到点就干”,trigger 是“有事才干”。
✅ 用 cron:
✅ 用 trigger:
如果你愿意,我也可以: