服务器时间漂移,如何开启Linux NTP自动同步

前言

在日常服务器运维中,我们往往默认服务器的时间是精准的。但最近一次偶然的 date 查询,让我发现------服务器时间竟然悄悄地漂移了......

本文记录了整个排查与解决的过程,希望能帮到遇到类似问题的朋友,也为自己留下一份系统化的成长笔记。

发现问题

我最近在开发 StarBlog 的访问分析功能,但发现记录下来的日志似乎时间不太对

于是我登录到服务器,输入 date 命令时,发现当前时间与实际北京时间存在一定的误差。

bash 复制代码
[deali@server ~]# date
Sun Apr 27 14:40:53 CST 2025

虽然时间差距不大,但对于需要精准时间记录的服务器来说,哪怕几分钟的误差,也可能导致日志时间错乱、计划任务异常、SSL验证失败等一系列问题。

初步排查

为了进一步确认问题,在大模型爷爷的指导下,我使用了 timedatectl status 命令进行排查:

bash 复制代码
[deali@server ~]# timedatectl status
      Local time: Sun 2025-04-27 14:40:53 CST
  Universal time: Sun 2025-04-27 06:40:53 UTC
        RTC time: Sun 2025-04-27 06:50:29
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

可以看到,虽然时区设置正确(Asia/Shanghai),但 NTP未启用(NTP enabled: no) ,也未同步(NTP synchronized: no)

这意味着服务器时间完全靠系统自身运行,长时间下来必然会发生漂移。

🔎 小知识:NTP(Network Time Protocol)是一种用于网络设备间同步时间的协议,保持系统时间与世界标准时间同步,至关重要。

尝试启用NTP同步

于是,我尝试通过 timedatectl 开启NTP同步:

bash 复制代码
sudo timedatectl set-ntp true

再次查看状态:

bash 复制代码
[deali@server ~]# timedatectl status
     NTP enabled: yes
NTP synchronized: no

虽然成功启用了NTP(enabled: yes),但同步状态依然是 no

一时间,我仿佛看见了希望的曙光,却又差点被现实的雨浇灭。🌧️

这说明服务器虽然打开了NTP同步开关,但并未成功同步。可能是:

  • 服务器缺少对应的NTP客户端服务;
  • 网络无法访问默认的时间服务器;
  • 需要更长时间等待第一次同步(但这并不可靠)。

使用 Chrony

为了快速且稳定地完成时间同步,我选择安装轻量且高效的 NTP 客户端 ------ chrony

安装

bash 复制代码
sudo yum install chrony -y
sudo systemctl enable chronyd
sudo systemctl start chronyd

立即同步时间

bash 复制代码
sudo chronyc makestep

执行后,系统时间瞬间精准对齐,无需等待!

配置国内NTP源

编辑 /etc/chrony.conf,将默认服务器替换为国内源

conf 复制代码
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server cn.pool.ntp.org iburst

保存后,重启chronyd:

bash 复制代码
sudo systemctl restart chronyd

验证同步状态

bash 复制代码
chronyc tracking

输出中可以看到参考时间源(Reference ID)、同步状态(stratum)等详细信息。

同时,timedatectl status 已显示:

bash 复制代码
NTP enabled: yes
NTP synchronized: yes

至此,系统时间同步问题基本解决。

同步硬件时钟(RTC)

虽然系统时间已经同步,但检查后发现硬件时钟(RTC)仍与系统时间不一致。

如果不及时同步,未来服务器重启时可能又会出现时间偏差。

可以使用命令,将系统时间同步到RTC:

bash 复制代码
sudo hwclock --systohc

同步完成后,验证:

bash 复制代码
hwclock --show

确认硬件时钟与系统时间一致,真正做到开机即精准。

小结

通过这次排查与解决,我收获了以下几点经验:

  • NTP同步的重要性
    系统时间漂移会带来一连串连锁反应,必须确保服务器时间精准同步。
  • 排查思路的重要性
    从表面问题出发,使用合适的工具(如 timedatectl)循序渐进排查,不盲目操作。
  • 善用高效工具(Chrony)
    相比传统的 ntpdchrony 更加轻量、灵活、快速,非常适合现代服务器环境。
  • 小问题背后的系统性成长
    每一次排查,看似琐碎,但实质上是在打磨自己的问题分析能力和系统运维技能。

🚀 如果说运维是一场长跑,那么每一次问题排查,都是在向专业稳步迈进的一小步。

希望这次经历,也能帮到正在成长路上的你。

参考资料

相关推荐
程序猿(雷霆之王)2 小时前
Linux——进程间通信
linux·运维·服务器
riveting3 小时前
SD2351核心板:重构AI视觉产业价值链的“超级节点”
大数据·linux·图像处理·人工智能·重构·智能硬件
易保山3 小时前
MIT6.S081 - Lab10 mmap(文件&内存映射)
linux·操作系统·c
禅与Bug的修复艺术3 小时前
JAVA后端开发常用的LINUX命令总结
java·linux·面试·java面试·后端开发·java后端·面试经验
北冥有鱼被烹5 小时前
【微知】/proc中如何查看Linux内核是否允许加载内核模块?(/proc/sys/kernel/modules_disabled)
linux·服务器
qq_273900235 小时前
CentOS系统防火墙服务介绍
linux·运维·centos
小余吃大鱼5 小时前
CentOS中在线安装Docker(超详细)
linux·docker·centos
程序员JerrySUN5 小时前
驱动开发硬核特训 · Day 19:字符设备驱动实战(控制 LED)
linux·驱动开发
小灰灰__6 小时前
Linux安装ffmpeg7.1操作说明
linux·运维·服务器
Zz_waiting.6 小时前
网络原理 - 9
linux·服务器·网络·网络协议·tcp/ip