服务器时间差几分钟就出问题:用 timedatectl 对时与检查 NTP 同步的三个命令
服务器时间差几分钟,表面上只是显示不对,实际上会连锁出问题:HTTPS 证书校验可能失败、定时任务在错误的时间执行、日志时间戳对不上、数据库主从复制或令牌过期判断也可能异常。遇到这类故障,先不要急着重启服务,先确认时间本身是否准确、是否在同步。
第一步:看当前时间和同步状态
timedatectl
重点看三行:Local time 是当前本地时间,System clock synchronized 是否为 yes,NTP service 是否为 active。如果显示 no 或 inactive,说明系统根本没有在对时,后面的排查都要围绕这一点展开。
第二步:确认 NTP 服务是否真的在工作
timedatectl show-timesync --all
或者在较新的系统上用:
chronyc tracking
chronyc sources -v
chronyc tracking 会显示当前参考时间源、系统时间偏移量(System time)和上次校正时间;偏移量如果长期停留在秒级甚至分钟级,就说明同步没有生效。sources 则能看到各个时间源的状态,* 表示当前正在使用的源,^? 或长时间无更新的源往往是网络不通或配置错误。
第三步:手动触发一次对时并复查
如果服务是开启的但时间仍不准,可以先重启时间同步服务,再复查:
sudo systemctl restart systemd-timesyncd
# 使用 chrony 的系统则执行:
# sudo systemctl restart chronyd
sleep 5
timedatectl
重启后等待几秒再看 timedatectl,System clock synchronized 应变为 yes,且 Local time 与标准时间基本一致。如果仍然是 no,接下来再查防火墙或安全组是否放行了 UDP 123 端口、NTP 服务器地址是否可达,而不是反复重启业务服务。
一个容易踩的坑:时区错了,时间看起来也错
timedatectl 里 Time zone 如果不是 Asia/Shanghai,本地时间就会差几个小时,但这不是同步问题。确认并修正时区:
timedatectl list-timezones | grep Shanghai
sudo timedatectl set-timezone Asia/Shanghai
改完时区后,date 输出应立即变为北京时间,再结合前面的同步检查确认一次。
小结
时间故障的排查顺序建议固定下来:先 timedatectl 看状态,再用 chronyc 或 show-timesync 看时间源与偏移量,最后重启同步服务并复查;时区问题单独确认。按这个顺序走,大多数“时间差几分钟”的问题都能在几分钟内定位,不用靠重启业务服务碰运气。
- 点赞
- 收藏
- 关注作者
评论(0)