Debian定时器能否自定义触发时间
导读:可行性与总体说明 可以,debian 的定时器基于 systemd,支持通过 oncalendar 精确指定“年-月-日 时:分:秒”的触发时间,也支持按周、月、年等周期以及基于启动后或上次执行后的相对时间触发;配合 persistent=...
可行性与总体说明 可以,debian 的定时器基于 systemd,支持通过 oncalendar 精确指定“年-月-日 时:分:秒”的触发时间,也支持按周、月、年等周期以及基于启动后或上次执行后的相对时间触发;配合 persistent=true 还能在关机错过时自动补执行,满足绝大多数自定义时间需求。
快速上手示例
- 创建要执行的任务服务单元:/etc/systemd/system/my-script.service
- [unit]
- description=my custom script
- [service]
- type=simple
- execstart=/path/to/your/script.sh
- [unit]
- 创建定时器单元:/etc/systemd/system/my-script.timer
- [unit]
- description=run my-script.service daily at 6:00 am
- [timer]
- oncalendar=--* 06:00:00
- persistent=true
- unit=my-script.service
- [install]
- wantedby=timers.target
- [unit]
- 启用并启动
- sudo systemctl daemon-reload
- sudo systemctl enable --now my-script.timer
- 常用检查
- systemctl list-timers --all
- systemctl status my-script.timer
- journalctl -u my-script.service
常用时间表达式
- 每天固定时刻:oncalendar=--* 08:30:00(每天 08:30 执行)
- 每小时整点:oncalendar=--* *:00:00
- 工作日固定时刻:oncalendar=mon…fri 18:00:00(周一至周五 18:00)
- 每周一次:oncalendar=weekly(等同于每周一 00:00,取决于本地日历设置)
- 每月一次:oncalendar=monthly(每月 1 日 00:00)
- 说明:oncalendar 支持丰富的日历语法,可按需组合“年/月/日/时/分/秒”与“周”规则实现任意自定义时间点。
进阶用法与运维要点
- 错过补偿:persistent=true 可在系统恢复后补执行错过的触发,适合关键维护任务
- 开机后或上次后触发:onbootsec=5min(开机 5 分钟后执行一次)、onunitactivesec=6h(上次执行后每隔 6 小时执行)
- 精度与分散负载:accuracysec=1s(计时精度)、randomizeddelaysec=15min(在预定时间附近随机延迟,避免集中执行)
- 常用命令
- 修改单元后重载:sudo systemctl daemon-reload
- 查看下次触发:systemctl list-timers --all
- 查看执行日志:journalctl -u your-service.service
- 停止/禁用:sudo systemctl stop|disable your-timer.timer
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian定时器能否自定义触发时间
本文地址: https://pptw.com/jishu/748736.html
