0

0

systemd timer OnCalendar 延迟几小时的 accuracy / randomizeddelay 配置

冷漠man

冷漠man

发布时间:2026-02-25 09:41:02

|

549人浏览过

|

来源于php中文网

原创

oncalendar 触发延迟主因是 randomizeddelaysec 默认1小时叠加唤醒补偿延迟,禁用需设 randomizeddelaysec=0 并配 accuracysec=1min;persistent=true 可补休眠错失的单次触发,但 weekly 语法实际等价于 mon,thu 且不支持 persistent。

systemd timer oncalendar 延迟几小时的 accuracy / randomizeddelay 配置

OnCalendar 触发时间比预期晚几小时,是 accuracy 设置没生效?

不是 accuracy 没生效,而是 systemd 默认启用了 RandomizedDelaySec(默认 1 小时),且该延迟会叠加在 OnCalendar 基础上——哪怕你只写了 OnCalendar=hourly,实际触发也可能在整点后 0~3600 秒内随机漂移。更隐蔽的是:如果系统刚启动或从休眠恢复,systemd 还会额外施加 up to 1 小时的“唤醒补偿延迟”,合起来就可能晚 2 小时。

实操建议:

  • 确认是否真被随机化影响:systemctl show <service-name>.timer | grep -E "(Accuracy|Randomized)"</service-name>,检查 AccuracySecRandomizedDelaySec 实际值
  • 禁用随机延迟:在 timer 单元文件中显式写 RandomizedDelaySec=0(不能留空或注释掉)
  • 若需高精度(如分钟级同步),必须同时设 AccuracySec=1min,否则 systemd 仍可能把执行窗口放宽到默认 1h
  • 注意:修改后要 systemctl daemon-reload + systemctl restart <name>.timer</name>,仅 reload 不重启 timer 不会重载 RandomizedDelaySec

RandomizedDelaySec=0 之后还是不准?检查系统时钟与 suspend 行为

即使关了随机延迟,真实触发时间仍可能偏移几十秒到几小时——常见于笔记本或虚拟机:系统休眠后唤醒,systemd timer 不会“补发”错过的触发,而是等下一个自然周期;更糟的是,如果 OnCalendar 使用了 *-*-* 02:00:00 这类固定时间,而系统在凌晨 2 点关机/休眠,这次触发就永久丢失。

实操建议:

  • systemctl list-timers --all 查看下次触发时间(Next column),对比当前系统时间,确认是否真延迟,还是单纯“错过一次”
  • 避免依赖绝对时间:改用 OnBootSec=1hOnUnitActiveSec=1h,它们不依赖系统时钟对齐,适合后台轮询类任务
  • 若必须用 OnCalendar 且机器常休眠,加 Persistent=true ——它会让 timer 在唤醒后立即补跑一次错过的触发(但仅限最近一次,不会累积)
  • 检查 NTP 同步状态:timedatectl status,若 System clock synchronized: noOnCalendar 解析会出错(比如把 UTC 当本地时间算)

accuracy=1s 和 accuracy=1min 对资源和触发行为的实际影响

AccuracySec 不是“精度承诺”,而是 systemd 主动等待的“容忍窗口”。设太小(如 1s)会让 systemd 每秒检查一次时钟,增加唤醒频率和 CPU 开销;设太大(如 1h)则可能让本该 02:00 执行的任务拖到 02:59 才运行——尤其当系统负载高、timer 被调度延迟时,实际偏差会接近这个值。

PatentPal专利申请写作
PatentPal专利申请写作

AI软件来为专利申请自动生成内容

下载

实操建议:

  • 普通日志轮转、备份任务,AccuracySec=1min 安全且省电;实时性要求高的监控拉取,可压到 10s,但别盲目设 1s
  • AccuracySec 必须配合 RandomizedDelaySec=0 才有效,否则随机延迟会覆盖你的精度设置
  • 注意单位:只接受秒(30s)、分(2min)、时(1h),不支持 ms 或小数
  • 值越小,systemd 越频繁地从 idle 状态唤醒,对电池设备影响明显——systemd-analyze blame 可查 timer 唤醒次数

OnCalendar=weekly 和 OnCalendar=Mon *-*-* 02:00:00 的行为差异

表面都是“每周一凌晨 2 点”,但 weekly 是语法糖,等价于 Mon,Thu *-*-* 00:00:00(systemd 文档明确写死为周一+周四),而 Mon *-*-* 02:00:00 才是真正只在周一 2 点触发。更关键的是:两者对 Persistent 和错失触发的处理逻辑不同。

实操建议:

  • 永远用显式格式(如 Mon *-*-* 02:00:00)替代 weekly,避免语义误解
  • Persistent=trueweekly 无效——它只补最近一次错过的触发,但 weekly 每次触发都算“新周期”,补的可能是三天前的周一,而非刚错过的那个
  • 跨时区部署时,OnCalendar 默认按系统本地时区解析;若需 UTC,必须写 OnCalendar=Mon *-*-* 02:00:00 UTC,否则夏令时切换时可能漏掉或重复执行
  • 测试用 systemctl trigger <name>.timer</name> 不会模拟 OnCalendar 逻辑,要用 systemctl start <name>.timer</name> 手动触发验证

真正难调的不是参数本身,而是 timer 行为隐含的“上下文依赖”:系统是否休眠、NTP 是否同步、时区是否设对、甚至 systemd 版本对 Persistent 的实现差异——这些不会报错,只会让触发时间悄悄漂移几个小时。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

智谱清言 - 免费全能的AI助手
智谱清言 - 免费全能的AI助手

智谱清言 - 免费全能的AI助手

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1541

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

715

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

300

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

792

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

584

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

565

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

309

2023.07.20

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

397

2023.07.25

Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

18

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号