前言

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

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

发现问题

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

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

[deali@server ~]# date
Sun Apr 27 14:40:53 CST 2025

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

初步排查

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

[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同步:

sudo timedatectl set-ntp true

再次查看状态:

[deali@server ~]# timedatectl status
NTP enabled: yes
NTP synchronized: no

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

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

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

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

使用 Chrony

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

安装

sudo yum install chrony -y
sudo systemctl enable chronyd
sudo systemctl start chronyd

立即同步时间

sudo chronyc makestep

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

配置国内NTP源

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

server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server cn.pool.ntp.org iburst

保存后,重启chronyd:

sudo systemctl restart chronyd

验证同步状态

chronyc tracking

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

同时,timedatectl status 已显示:

NTP enabled: yes
NTP synchronized: yes

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

同步硬件时钟(RTC)

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

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

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

sudo hwclock --systohc

同步完成后,验证:

hwclock --show

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

小结

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

  • NTP同步的重要性

    系统时间漂移会带来一连串连锁反应,必须确保服务器时间精准同步。
  • 排查思路的重要性

    从表面问题出发,使用合适的工具(如 timedatectl)循序渐进排查,不盲目操作。
  • 善用高效工具(Chrony)

    相比传统的 ntpdchrony 更加轻量、灵活、快速,非常适合现代服务器环境。
  • 小问题背后的系统性成长

    每一次排查,看似琐碎,但实质上是在打磨自己的问题分析能力和系统运维技能。

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

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

参考资料

服务器时间漂移,如何开启Linux NTP自动同步的更多相关文章

  1. linux设置自动同步服务器时间

    最近遇到一个问题,由于两台服务器时间的问题,经常导致用户登录由于时间差问题而报错,再三百度,最后整理了一下修改linux定时同步的操作(本方法适用于有自己时间服务器,没有的只限于借鉴) 首先确认,我们 ...

  2. linux下自动同步internet时间

    linux下很简单直接一句即可: ntpdate time.nist.gov ntp后面参数为internet时间服务器url或ip即可. 但是ntpdate命令需要root特权,如果做成自动运行每次 ...

  3. 利用ntp自动同步时间

    实验环境:centos 6.10 1.安装ntp工具 yum install -y ntp 2.便宜/etc/ntp.conf文件,添加远程时间服务器 server ntp1.aliyun.com s ...

  4. Linux 系统时间查看 及 时区修改(自动同步时间)

    1:使用date命令查看时区 [root@db-server ~]# date -R   Sun, 11 Jan 2015 07:10:28 -0800   [root@db-server ~]#   ...

  5. 【转载】Linux 系统时间查看 及 时区修改(自动同步时间)

    1:使用date命令查看时区 [root@db-server ~]# date -R   Sun, 11 Jan 2015 07:10:28 -0800   [root@db-server ~]#   ...

  6. linux ntp时间同步

    linux ntp时间同步 一.搭建时间同步服务器1.编译安装ntp serverrpm -qa | grep ntp若没有找到,则说明没有安装ntp包,从光盘上找到ntp包,使用rpm -Uvh n ...

  7. NTP时钟同步配置

    NTP在Linux下有两种时钟同步方式: 直接同步(也称跳跃同步)和平滑同步(也称微调同步). 直接同步 使用ntpdate命令进行同步,直接进行时间变更. 如果服务器上存在一个12点运行的任务,当前 ...

  8. Linux NTP服务器的搭建及client自动更新时间

    Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间 ...

  9. 搭建NTP时间服务器~使用NTP同步时间~构建主机间时间自动同步关系

    NTP是一个时间服务器,同时它也是一个时间客户端. 我们可以使用它构建主机与主机之间的时间自动同步环境,保证所有服务器时间一致性. 常用的公共NTP时间服务器有: cn.ntp.org.cn 中国 n ...

  10. 【转载】linux系统时间自动同步:ntp

    NTP基本介绍 NTP(Network TimeProtocol,网络时间协议),使用来使本地机器与服务端机器时间保持同步的一种协议.如果我们只有一台机器那么只需要安装NTP客户端ntpdate这个包 ...

随机推荐

  1. Docker部署Go+Mysql+Redis

    两种方式Docker和Docker Compose部署web项目,相对于Go语言来说,不管是使用docker部署还是直接服务器部署都相当方便,比python要简单很多. 1.Dockerfile结构解 ...

  2. 解决Git拉取出现“bad config line 1 in file C:\Users\quber/.gitconfig”的错误

    1.问题描述 我们在拉取Git项目的时候,突然出现如下图所示的错误提示: 2.解决办法 定位到.gitconfig文件,然后将其删除掉: 然后在项目文件夹中点击鼠标右键,选择Git Bash Here ...

  3. 鸿蒙页面开发 - 扩展组件样式 @Extend

    这篇文章介绍一个装饰器 @Extend,它的主要作用是:用于扩展原生组件的样式 比如我们扩展 Text 组件的样式,为其添加一个默认的 fontSize 和 fontColor,如下: @Entry ...

  4. StarUML画时序图

    一.打开软件,新建时序图 二.画图 2.1 新建用户图标 2.2 新建几个生命线Lifeline 2.3 建立连接关系 2.4 图例

  5. 同步一下在notion上写的内容

    之前在notion上写了一些内容,但因为notion上的编辑器和博客园的不太一样,所以不好直接搬运过来,这里同步一下链接: 之前看MIT线性代数网课做的笔记:重温线性代数 算法课笔记之一:分而治之 算 ...

  6. 什么是OpenStack?

    OpenStack是一个云平台管理的项目,它不是一个软件,它是由几个主要的组件组合起来,为公有云.私有云和混合云的建设与管理提供软件的开源项目.现在已经有来自100多个国家的数万名个人和200多家企业 ...

  7. Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库

    #div_digg { float: right; font-size: 12px; margin: 10px; text-align: center; width: 120px; position: ...

  8. job提交后,inp文件的处理过程

    用户提交job后,abaqus的inp文件处理过程 1. 对inp文件预处理 打开任务管理器可以看到pre.exe的进程 预处理中的error .warning 都会在.DAT文件中 dat文件出现e ...

  9. ppt 文字 +图 样式 设计

    1. 设计前 设计后 图 +文字排版 图多 字少

  10. vscode如何退出/切换 github 账号

    退出/切换 github 账号 左下角点击头像按钮,选择注销,然后再重新登录