在 Ubuntu 中,“Trigger”通常指基于时间或事件的自动化触发机制。常见做法包括:按时间调度的 cron 与 systemd 定时器,按系统事件的 systemd 服务,按文件变化的 inotify,以及登录时自动启动的 桌面自启动。下面按场景给出可直接使用的配置方法与排错要点。
常用触发方式与选择建议
- 定时触发:用 cron 快速设置周期任务;需要更复杂依赖、日志与并发控制时,用 systemd 定时器。
- 事件触发:系统启动/关机/网络就绪等用 systemd 服务;文件或目录被创建/修改时用 inotify。
- 登录触发:带桌面环境的 Ubuntu 可将应用加入 ~/.config/autostart/ 实现用户登录即启动。
操作步骤
实用建议与排错
- 使用绝对路径调用脚本与解释器;在脚本中显式设置环境变量(如 PATH、HOME),因为 cron 与系统服务的环境与登录会话不同。
- 权限与用户:需要系统级权限请使用 sudo 创建服务;服务单元中通过 User= 指定运行身份。
- 日志与状态:
- cron:启用 /var/log/cron.log 并用 tail -f 实时查看。
- systemd:用 systemctl status my_trigger.service、journalctl -u my_trigger.service -b 定位问题。
- 定时器:用 systemctl list-timers 确认下一次触发时间。
- 避免重复运行:inotify 循环内注意加锁或状态判断;systemd 服务可用 Restart=on-failure 并配合 Type=oneshot/simple 合理选择。