电话
400 9058 355
“Insert second”不是夏令时问题,而是chronyd准备插入UTC闰秒;需内核支持adjtimex且配置正确才能生效,否则仅记录日志或卡住状态。
不是。这个状态和夏令时(DST)完全无关,它表示 chronyd 正在准备插入一个闰秒(leap second),即在 UTC 时间 23:59:60 多加一秒。夏令时切换是本地时区的偏移变更(如 CET → CEST),由 tzdata 和系统时区配置控制,chronyd 不参与、也不感知 DST 跳跃。
取决于配置和系统内核支持:
chronyd 默认启用闰秒插入(leapsectz 指令未禁用),且系统时区文件(/usr/share/zoneinfo/right/ 下的 tzdata)包含闰秒信息时,它会在 UTC 时间到达前约 24 小时进入 Insert second 状态,并在指定时刻通过 CLOCK_ADJTIME 系统调用向内核注入闰秒CONFIG_RTC_DRV_CMOS 或支持 adjtimex(2) 的高精度时钟源;否则 chronyd 只能记录日志,无法实际插入,状态可能卡住或降级为 Not synchronised
makestep 或 rtcsync,它们与闰秒处理正交——makestep 修正大偏差,rtcsync 同步 RTC,都不影响闰秒逻辑不能只看 chronyc tracking 输出,需交叉检查:
chronyd 日志:journalctl -u chronyd | grep -i "leap.*insert\|leap second",确认是否有 Inserting leap second 或 Leap second inserted
adjtimex -p | grep "status\|leap",输出中 status 值为 0x2001(含 STA_INS 标志)表示已置入插入标志;leap 字段为 1 表示等待插入,0 表示已完成或
chronyc sources -v 确认上游服务器(如 pool.ntp.org)本身是否广播闰秒预告(leap indicator 字段为 01);若上游没发,chronyd 不会主动插入常见于容器、虚拟化或老旧内核场景:
adjtimex,需添加 cap_sys_time 能力,或改用 chronyd -q + systemd-timedated 间接同步(牺牲闰秒精度)host-time 或 rtc_clock=host,宿主机时间跳变会直接透传给客户机,此时 chronyd 的闰秒插入可能冲突甚至失败——应禁用宿主机 RTC 同步,仅依赖 NTPCONFIG_TIME_NS,容器时间命名空间可能隔离闰秒状态,导致 adjtimex 返回 EPERM;需升级 chrony ≥ 4.0 并启用 leapsecmode 1(由用户态模拟闰秒)闰秒不是“每到夏天就来一次”的常规操作,十年最多两次,但一旦出错会影响金融、日志时序、分布式锁等对单调时间敏感的系统——别把它当成 DST 那样忽略,也别在没验证内核和容器权限的情况下假设它“自动生效”。
邮箱:8955556@qq.com
Q Q:8955556
本文详解如何将Go官方present工具(用于生成HTML5...
PySNMP在不同版本中对SNMP错误状态(errorSta...
time.Sleep仅阻塞当前goroutine,其他gor...
PHPfopen()创建含特殊符号的文件名失败主因是操作系统...
WooCommerce中通过代码为分组产品动态聚合子商品的属...
io.ReadFull返回io.ErrUnexpectedE...
本文详解Yii2中控制器向视图传递ActiveRecord数...
本文详解为何通过wp_set_object_terms()为...
Pytest中使用@mock.patch类装饰器会导致补丁泄...
带缓冲的channel是并发安全的FIFO队列;make(c...