概念澄清 在 Ubuntu 生态里,“Trigger”并非一个官方内置的统一命令或单一工具的名称。实际工作中,人们常把能“由事件驱动执行任务”的机制泛称为触发器,典型实现包括:systemd 定时器与路径/服务触发器、inotify 文件系统事件、cron 定时调度、桌面/嵌入式热键的 Triggerhappy,以及 Kubernetes 上的 Tekton Triggers(CI/CD 事件触发)。这些机制共同点是:在某个事件或条件满足时,自动调用脚本或服务,从而实现自动化。
在自动化中的核心作用
常见实现与适用场景对比
| 机制/工具 | 触发源 | 典型场景 | 关键命令或配置 | 优点 | 局限 |
|---|---|---|---|---|---|
| systemd 定时器 | 时间(日历/单调时钟) | 每日备份、周度报表 | OnCalendar=--* 03:00:00;Persistent=true | 与系统深度集成、日志与依赖管理完善 | 粒度到“分”,复杂依赖编排较弱 |
| systemd 路径/服务触发器 | 路径/设备/服务状态 | 插入U盘自动备份、服务就绪后联动 | Path/Service 单元 + WantedBy | 事件驱动、按需激活 | 需理解 unit 依赖与激活条件 |
| inotify | 文件系统事件 | 日志追加即分析、目录同步 | inotifywait -m -e create,modify | 实时、低开销 | 仅限本机文件系统,需常驻进程 |
| cron | 时间(分/时/日/月/周) | 定时清理、夜间批处理 | 0 2 * * * /path/script.sh | 简单通用、系统自带 | 非实时、易产生时间漂移/堆积 |
| Triggerhappy | 输入设备/热键 | 按键即执行、嵌入式控制 | triggerhappy --list-devices;配置规则 | 轻量、响应快 | 主要面向本地与简单事件 |
| Tekton Triggers | Webhook/事件 | 代码推送自动构建部署 | EventListener + TriggerBinding/Template | 云原生、可编排、可扩展 | 需 K8s 与 Tekton 环境 |
快速上手示例
[Unit]
Description=Daily backup job
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
[Unit]
Description=Run daily backup at 03:00
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now daily-job.timer
#!/usr/bin/env bash
DIR="/data/incoming"
SCRIPT="/usr/local/bin/handle.sh"
inotifywait -m -e create -e modify --format '%w%f' "$DIR" | while read FILE; do
"$SCRIPT" "$FILE"
done
选型建议