Ubuntu定时器(主要基于systemd-timer)支持的触发器类型及说明
时间触发器是systemd定时器的核心功能之一,支持绝对时间(如每天固定时刻)、周期时间(如每周一、每月1号)和相对时间(如系统启动后、上次任务完成后)的触发规则。常见配置项包括:
Mon..Fri 09:00表示每周一至周五9点),支持年、月、日、时、分、秒的灵活组合;OnBootSec=5min表示系统启动后5分钟执行);OnUnitActiveSec=1h表示每小时执行一次);OnUnitInactiveSec=30min表示任务结束后30分钟再次启动)。systemd-analyze calendar命令验证下次触发时间,确保配置准确。通过inotify机制监控文件或目录的变化(如创建、删除、修改、属性变更),当检测到指定事件时触发任务。常用工具包括:
inotifywait -m -r -e create,delete /path/to/dir),并结合脚本执行后续操作(如备份、通知);incrontab -e编辑监控规则(如/path/to/file IN_MODIFY /path/to/script.sh表示文件修改时执行脚本)。通过udev规则监控硬件设备的插拔、状态变化(如USB设备插入、网卡启用),触发关联任务。配置文件位于/etc/udev/rules.d/(如99-usb-backup.rules),规则示例:
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="yyyy", RUN+="/path/to/backup.sh"
该规则表示当检测到指定厂商(idVendor)和产品(idProduct)的USB设备插入时,执行backup.sh脚本(如备份设备数据)。
通过systemd的依赖机制,设置定时器或服务在其他服务就绪或系统状态满足时触发。常见配置项包括:
Requires=network-online.target表示需等待网络就绪);ConditionPathExists=/mnt/backup表示挂载点存在时才触发);ConditionCalendar=2025-12-25表示仅在2025年圣诞节触发)。通过RandomizedDelaySec配置项设置随机延迟时间(如RandomizedDelaySec=30m),在触发时间基础上增加0到指定时间的随机延迟,避免多个定时任务同时启动(如多个备份任务同时运行导致磁盘IO过高)。该触发器常用于负载均衡场景,优化系统资源使用。
结合时间表达式和条件判断,仅在满足特定条件时触发任务。常见配置项包括:
AccuracySec=100ms),减少不必要的频繁触发(如精确到毫秒级的任务);true,错过触发时间后会补运行(如系统关机时错过备份,开机后自动执行)。