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

如何计算两台Linux服务器及虚拟机之间的毫秒级时间差?

实现Linux服务器/虚拟机间的毫秒级时间差检测

1. 用date命令直接输出毫秒级时间

默认的date命令可通过格式化参数输出毫秒甚至纳秒级时间:

  • 输出带毫秒的完整时间:date +%Y-%m-%d\ %H:%M:%S.%3N
  • 输出秒+毫秒的时间戳:date +%s%3N
  • 输出纳秒级时间戳(便于精确计算差值):date +%s%N

如果要实时监控,别用默认的watch date(默认1秒刷新且仅到秒级),可以指定更高刷新频率并带上毫秒格式:

watch -n 0.1 'date +%Y-%m-%d\ %H:%M:%S.%3N'

-n 0.1表示每0.1秒刷新一次,能清晰看到毫秒的动态变化。

2. 跨机器时间差对比脚本

要精确计算两台机器的时间差,建议在两台机器上同时运行以下脚本采集时间戳,再离线对比:

#!/bin/bash
# 持续输出纳秒时间戳和主机名,每50毫秒采集一次
while true; do
    echo "$(date +%s%N) $(hostname)"
    sleep 0.05
done

将两台机器的输出保存到文件后,找到时间接近的记录,把纳秒差值除以1000000即可得到毫秒级时间差。

3. 借助时间同步工具查看偏差

如果机器使用chrony做时间同步,直接用chronyc tracking查看本地时间与同步源的偏差:

chronyc tracking

输出中的System time字段会显示当前系统时间与NTP源的偏差,格式类似System time : 0.002345 seconds slow of NTP time,精确到微秒,换算后就是毫秒级偏差。

如果用的是ntp服务,可使用ntpdate -q查询与NTP服务器的时间差:

ntpdate -q pool.ntp.org

输出中的offset字段即为时间偏差,比如offset -0.001234 sec表示本地时间比服务器慢1.234毫秒。

注意事项

  • 远程执行命令时要考虑SSH网络延迟的影响,尽量在本地机器上独立采集时间数据。
  • 若需要长期监控时间同步状态,建议配置chrony或ntpd服务保持机器间的时间同步,偏差通常能控制在毫秒级以内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:10:42