在 Ubuntu(以及类 Unix 系统)里,trigger 和 cron 都是“在某种条件下执行任务”的机制,但它们的触发方式、使用场景和管理方式不同。下面从几个维度对比说明。
cron 是基于“时间”的调度器。
例子:
0 2 * * * /usr/bin/backup.sh
每天凌晨 2 点执行
trigger 是基于“事件”的触发机制(不是 Ubuntu 默认自带的一个统一组件)。
在 Ubuntu 中,trigger 通常出现在以下场景:
例子(systemd):
[Unit]
Description=Run after network online
[Service]
ExecStart=/usr/bin/sync-data.sh
[Install]
WantedBy=network-online.target
网络就绪后才触发,而不是固定时间
| 对比项 | cron | trigger |
|---|---|---|
| 触发依据 | 时间(分钟/小时/天) | 事件(启动、状态变化、硬件、依赖) |
| 是否固定周期 | ✅ 是 | ❌ 否 |
| 系统依赖 | cron 服务 | systemd / udev / 应用自身 |
| 是否关心系统状态 | ❌ 不关心 | ✅ 关心 |
| 典型例子 | 每天 3 点备份 | 网络连上后同步数据 |
| 适合场景 | 周期性任务 | 条件性任务 |
systemctl trigger
udevadm trigger
比如插入 USB 后自动挂载
dpkg --configure -a
安装/卸载软件后触发配置
✅ 用 cron 当:
✅ 用 trigger 当:
cron 是“时间到了就做”,trigger 是“事情发生了才做”。
如果你愿意,我也可以: