You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

htpdate无法更新时间:树莓派4与Ubuntu离线时间同步异常

离线环境下树莓派4与Ubuntu主机时间同步问题

我有两台设备:树莓派4(Rpi4)和Ubuntu主机,二者处于离线网络环境中,计划将Rpi4的系统时间与Ubuntu主机同步。因端口和防火墙问题,NTP方案失败,转而使用htpdate工具,但始终无法消除时间偏移,无法设置正确的系统时间。

我已查阅以下资料仍未解决:

  • synchronising-time-between-two-linux-machines
  • how-to-sync-raspberry-pi-system-clock
  • how-to-know-if-htpdate-has-synchronized-system-clock
  • htpdate.8.en.html
  • htpdate.php

问题核心是无法消除时间偏移,我的会话输出如下:

pi@CMPL01-003-21:~ $ sudo htpdate -qd 10.42.0.1
burst: 1 try: 1 when: 500000
10.42.0.1                 80 14 Feb 2023 13:37:24 GMT (0.003) => 38
burst: 1 try: 2 when: 500000
10.42.0.1                 80 14 Feb 2023 13:37:25 GMT (0.006) => 38
#: 1 mean: 38 average: 38.000
Offset 38.000 seconds
poll 1800 s

pi@CMPL01-003-21:~ $ sudo htpdate -xqd 10.42.0.1
burst: 1 try: 1 when: 500000
10.42.0.1                 80 14 Feb 2023 13:39:25 GMT (0.003) => 38
burst: 1 try: 2 when: 500000
10.42.0.1                 80 14 Feb 2023 13:39:26 GMT (0.003) => 38
#: 1 mean: 38 average: 38.000
Adjusting 38.000 seconds
poll 1800 s

pi@CMPL01-003-21:~ $ sudo htpdate -sd 10.42.0.1
burst: 1 try: 1 when: 500000
10.42.0.1                 80 14 Feb 2023 13:40:26 GMT (0.003) => 38
burst: 1 try: 2 when: 500000
10.42.0.1                 80 14 Feb 2023 13:40:27 GMT (0.005) => 38
#: 1 mean: 38 average: 38.000
Setting 38.000 seconds
Set: Tue Feb 14 14:40:27 2023
poll 1800 s

请问是否存在未发现的htpdate隐藏参数,或是需要配置特定目录规则来消除时间偏移?


解决步骤

1. 验证Ubuntu主机的HTTP时间响应准确性

htpdate依赖HTTP响应头的Date字段同步时间,先确认源端是否正常:

  • 在Ubuntu主机执行date,确认本地系统时间准确
  • 执行curl -I 10.42.0.1,检查返回的Date字段是否和Ubuntu本地时间一致,注意时区差异(比如GMT/UTC和本地时区的转换)

2. 统一两台设备的时区配置

从输出看,Ubuntu返回GMT时间,树莓派设置后的时间为本地时区,时区不匹配会导致视觉上的偏移:

  • 在树莓派执行timedatectl,查看Time zone配置
  • 执行sudo timedatectl set-timezone <时区>(比如sudo timedatectl set-timezone UTC),和Ubuntu时区保持一致

3. 同步系统时间到硬件时钟

即使htpdate设置了系统时间,树莓派的硬件时钟(RTC)未同步的话,重启后时间会回退:

  • 执行sudo hwclock -w,将当前系统时间写入硬件时钟

4. 调整htpdate参数优化同步效果

  • 增加burst采样次数:用-b 4参数多抓取几次HTTP响应,减少单次请求的误差,命令示例:sudo htpdate -b 4 -sd 10.42.0.1
  • 指定静态文件路径:避免Web服务器根目录的缓存或动态处理影响时间字段,比如sudo htpdate -sd 10.42.0.1/index.html

5. 离线环境下的替代同步方案

如果htpdate始终无法解决,直接手动同步:

  • 在Ubuntu主机执行date +%Y%m%d%H%M.%S,生成时间字符串(比如202302141340.27)
  • 在树莓派执行sudo date -s "202302141340.27",再执行sudo hwclock -w同步硬件时钟

内容的提问来源于stack exchange,提问作者parovelb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:15:59