服务器时间漂移,如何开启Linux NTP自动同步
前言
在日常服务器运维中,我们往往默认服务器的时间是精准的。但最近一次偶然的 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)
相比传统的ntpd,chrony更加轻量、灵活、快速,非常适合现代服务器环境。 - 小问题背后的系统性成长
每一次排查,看似琐碎,但实质上是在打磨自己的问题分析能力和系统运维技能。
如果说运维是一场长跑,那么每一次问题排查,都是在向专业稳步迈进的一小步。
希望这次经历,也能帮到正在成长路上的你。
参考资料
服务器时间漂移,如何开启Linux NTP自动同步的更多相关文章
- linux设置自动同步服务器时间
最近遇到一个问题,由于两台服务器时间的问题,经常导致用户登录由于时间差问题而报错,再三百度,最后整理了一下修改linux定时同步的操作(本方法适用于有自己时间服务器,没有的只限于借鉴) 首先确认,我们 ...
- linux下自动同步internet时间
linux下很简单直接一句即可: ntpdate time.nist.gov ntp后面参数为internet时间服务器url或ip即可. 但是ntpdate命令需要root特权,如果做成自动运行每次 ...
- 利用ntp自动同步时间
实验环境:centos 6.10 1.安装ntp工具 yum install -y ntp 2.便宜/etc/ntp.conf文件,添加远程时间服务器 server ntp1.aliyun.com s ...
- Linux 系统时间查看 及 时区修改(自动同步时间)
1:使用date命令查看时区 [root@db-server ~]# date -R Sun, 11 Jan 2015 07:10:28 -0800 [root@db-server ~]# ...
- 【转载】Linux 系统时间查看 及 时区修改(自动同步时间)
1:使用date命令查看时区 [root@db-server ~]# date -R Sun, 11 Jan 2015 07:10:28 -0800 [root@db-server ~]# ...
- linux ntp时间同步
linux ntp时间同步 一.搭建时间同步服务器1.编译安装ntp serverrpm -qa | grep ntp若没有找到,则说明没有安装ntp包,从光盘上找到ntp包,使用rpm -Uvh n ...
- NTP时钟同步配置
NTP在Linux下有两种时钟同步方式: 直接同步(也称跳跃同步)和平滑同步(也称微调同步). 直接同步 使用ntpdate命令进行同步,直接进行时间变更. 如果服务器上存在一个12点运行的任务,当前 ...
- Linux NTP服务器的搭建及client自动更新时间
Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间 ...
- 搭建NTP时间服务器~使用NTP同步时间~构建主机间时间自动同步关系
NTP是一个时间服务器,同时它也是一个时间客户端. 我们可以使用它构建主机与主机之间的时间自动同步环境,保证所有服务器时间一致性. 常用的公共NTP时间服务器有: cn.ntp.org.cn 中国 n ...
- 【转载】linux系统时间自动同步:ntp
NTP基本介绍 NTP(Network TimeProtocol,网络时间协议),使用来使本地机器与服务端机器时间保持同步的一种协议.如果我们只有一台机器那么只需要安装NTP客户端ntpdate这个包 ...
随机推荐
- Flink白话解析Watermark
一.摘要 如果想使用Flink,Flink的Watermark是很难绕过去的概念.本文帮大家梳理Watermark概念 二.Watermark疑问 1.Flink应用的常见需求是什么 如公司运营一个官 ...
- TIPTOP应付账款流程学习
应付账款流程与应收账款流程是财务管理的开端,也是财务工作的主要流程. 企业的应付账款有很多种,如原材料的应付账款.电力能源的应付账款.房租的应付账款等,大头是原材料的应付账款,以下详细说明. 在讲解之 ...
- Monaco Editor 中使用在线版 Copilot
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:文长 引言 现代软件开发中,代码编辑器的功能不断演进,以满 ...
- keycloak~关于社区认证的总结
keycloak关于社区认证它有统一的设计,社区认证包括了github,microsoft,wechat,qq,dingtalk等等,当然你还可以扩展很多实现了oauth2协议的第三方社区,将它们对接 ...
- 反范式设计,冗余用户姓名,修改用户姓名后,业务表同步更新 -- MySQL 存储过程
反范式设计,冗余用户姓名,通过存储过程进行业务表的同步更新. 所有的表,在创建的时候,都加了创建人.修改人的字段..用户姓名发生变化时,要将所有的表都更新一遍. 创建存储过程 MySQL CREATE ...
- VMware虚拟机上安装Kali Linux详细教程
1.Kali Linux简介 Kali Linux是一个基于Debian的开源Linux发行版,集成了精心挑选的渗透测试和安全审计的工具,供渗透测试和安全设计人员使用,面向各种信息安全任务:如渗透测试 ...
- 基于融合语义信息改进的内容推荐算法。Improved content recommendation algorithm integrating semantic information
引言 路漫漫其修远兮,吾将上下而求索.每天一篇论文,做更好的自己. 本文读的这篇论文为发表于2023年5月28日的一篇名为<基于融合语义信息改进的内容推荐算法>(基于融合语义信息改进的内容 ...
- 前缀函数和 KMP "跳步骤"模式匹配
在一篇由字符构成的长文中查找另一个短字符串出现的位置,这可以算是编程领域最最常见的问题(比如按下 Ctrl + F 就可以打开你浏览器的查找功能).这个问题叫做字符串的模式匹配,我们把被查找的关键词叫 ...
- 【vscode】vscode配置Java
[vscode]vscode配置Java 前言 配环境,需要记录,避免反复踩坑. 步骤 step1:官网走 配环境为什么不直接上官网教程,Visual Studio Code - Co ...
- JMeter HTTP Request Get 请求的时候 response body 为空
已知原因: 1.Content encoding 的默认编码对应不上,需要手动设置编码为:UTF-8: 2.请求设置 Header,且设置有请求数据类型为 Content-Type: applicat ...