在 Linux 环境下,trigger(触发器) 和 cron 都是用来“在某个条件下执行任务”的机制,但概念层级、使用场景和触发方式有明显区别。下面从多个角度对比说明。
cron 是 Linux 中的定时调度工具,用于在指定时间周期性地执行命令或脚本。
crontab示例:
0 2 * * * /backup.sh
每天凌晨 2 点执行 backup.sh
trigger 不是 Linux 自带的某个具体工具,而是一个通用概念,表示:
当某个事件发生时,自动触发某个动作
常见 Linux 中的 trigger 场景:
示例(systemd path trigger):
[Path]
PathChanged=/data/input.txt
[Install]
WantedBy=multi-user.target
当
/data/input.txt改变时,触发对应 service
| 对比项 | cron | trigger |
|---|---|---|
| 触发依据 | 时间(周期) | 事件(状态/动作) |
| 是否实时 | 否(最小粒度通常为分钟) | 是(事件一旦发生立即触发) |
| 是否周期性 | 是 | 不一定 |
| 典型工具 | crontab, crond | systemd, inotify, udev |
| 适用场景 | 定时任务 | 条件驱动任务 |
| 灵活性 | 中 | 高 |
在现代 Linux(systemd 系统)中:
示例:
# cron 风格
systemd timer
# trigger 风格
systemd path / socket
cron 是“时间到了就执行”,trigger 是“事情发生了就执行”。
如果你有具体使用场景(比如:备份、文件监控、服务重启),我可以给你更合适的方案。