Debian中的定时器主要通过systemd服务来实现,它支持多种触发方式,以下是一些常见的触发方式:
OnCalendar指令指定一个具体的时间点或时间间隔。[Unit]
Description=Run a script every day at 5:30 AM
[Timer]
OnCalendar=*-*-* 05:30:00
Persistent=true
[Install]
WantedBy=timers.target
OnBootSec、OnStartupSec、OnUnitActiveSec等指令指定从系统启动或服务激活后经过的时间。[Timer]
OnBootSec=1min
Persistent=true
OnUnitActiveSec、OnUnitInactiveSec等指令根据服务的状态变化来触发。[Timer]
OnUnitActiveSec=1h
Persistent=true
OnNetworkOnline、OnNetworkAvailable等指令根据网络状态的变化来触发。[Timer]
OnNetworkOnline=yes
Persistent=true
User指令指定一个用户,并结合OnUserLoginSec等指令在用户登录后触发。[Timer]
User=myuser
OnUserLoginSec=1h
Persistent=true
Unit指令指定依赖于其他服务或定时器。[Timer]
Unit=my_service.timer
Persistent=true
RandomSec指令在指定的时间范围内随机选择一个时间点触发。[Timer]
OnCalendar=*-*-* 05:30:00
RandomSec=30s
Persistent=true
OnCalendar指令结合RepeatSec指令实现周期性触发。[Timer]
OnCalendar=*-*-* 05:30:00
RepeatSec=1h
Persistent=true
WatchdogSec指令监控服务的运行状态,并在超时后触发。[Timer]
WatchdogSec=30s
Persistent=true
ExecStartPre、ExecStart等指令执行自定义脚本,并在脚本中实现复杂的逻辑来触发定时任务。Persistent=true表示定时器在系统重启后仍然有效。Unit指令用于指定依赖的服务或定时器。OnCalendar指令支持多种时间格式,包括cron表达式。通过这些触发方式,Debian的定时器可以灵活地满足各种定时任务的需求。