Linux时间同步配置:chrony与ntpd教程
积累知识,胜过积蓄金银!毕竟在文章开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Linux时间同步设置:chrony与ntpd配置详解》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~
精确的系统时间对Linux服务器至关重要,因为它直接影响系统的稳定性、安全性及业务连续性。具体体现在日志分析、安全认证、计划任务执行以及分布式系统的一致性等方面。解决方案分为两步:1. 手动调整系统时间可使用timedatectl命令查看和设置时间与时区;2. 推荐配置chrony进行自动时间同步,其资源占用低、同步速度快、适应网络不稳定环境,安装后编辑配置文件添加NTP服务器,启动服务并用chronyc tracking和chronyc sources -v验证状态;也可选择传统ntpd,但不建议同时运行两者。验证时间同步需检查服务运行状态,使用timedatectl、chronyc或ntpq -p命令确认同步精度与源可达性,并排查常见故障如服务未运行、防火墙阻挡、DNS解析失败、时间偏差过大等问题。
在Linux系统中,设置系统时间的核心在于确保其精确性与一致性,这不仅可以通过手动命令实现,更重要的是依赖chrony
或ntpd
这样的网络时间协议(NTP)服务进行自动化同步。尤其在服务器环境中,时间的微小偏差都可能引发一系列连锁反应,影响日志分析、安全认证乃至分布式系统的正常运作。

解决方案
要设置Linux系统时间,我们通常会分两步走:手动调整(如果需要)和配置自动同步服务。
1. 手动调整系统时间(不推荐长期使用,但了解必要):
现代Linux发行版普遍使用systemd
的timedatectl
命令来管理系统时间和日期。

查看当前时间信息:
timedatectl status
这会显示当前本地时间、通用时间(UTC)、RTC时间、时区以及NTP同步状态等。
设置日期和时间:
sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS" # 示例:sudo timedatectl set-time "2023-10-27 10:30:00"
请注意,这会同时更新系统时间和硬件时钟(RTC)。
设置时区:
sudo timedatectl list-timezones # 列出所有可用时区 sudo timedatectl set-timezone Asia/Shanghai # 设置为上海时区
2. 配置chrony
进行时间同步(推荐):chrony
是一个轻量级的NTP客户端和服务器,它在很多方面比传统的ntpd
表现更优,尤其适用于经常关机、网络不稳定或虚拟机环境。
安装
chrony
: 在基于Debian的系统(如Ubuntu):sudo apt update sudo apt install chrony
在基于RHEL的系统(如CentOS, Fedora):
sudo yum install chrony # CentOS/RHEL 7 sudo dnf install chrony # Fedora/CentOS/RHEL 8+
配置
chrony
: 编辑主配置文件/etc/chrony.conf
。通常,你只需要确保有可靠的NTP服务器池。sudo vim /etc/chrony.conf
找到或添加
pool
行,例如:pool ntp.aliyun.com iburst # 阿里云NTP服务器 pool time.nist.gov iburst # 国际标准时间服务器 # 你也可以添加更多可靠的NTP服务器,比如: # pool 0.pool.ntp.org iburst # pool 1.pool.ntp.org iburst # pool 2.pool.ntp.org iburst # pool 3.pool.ntp.org iburst
iburst
选项允许在初始同步时发送一连串的请求,以加快同步速度。启动并启用
chrony
服务:sudo systemctl enable chronyd # 或 chrony,取决于发行版 sudo systemctl start chronyd # 或 chrony sudo systemctl status chronyd # 检查服务状态
验证同步状态:
chronyc tracking chronyc sources -v
chronyc tracking
会显示当前同步状态,包括参考ID、层级、NTP服务器地址等。chronyc sources -v
则会列出所有配置的NTP源及其状态。
3. 配置ntpd
进行时间同步(传统且稳定):ntpd
是历史悠久的NTP守护进程,功能强大且成熟,但资源占用相对chrony
略高,且对网络中断的适应性稍逊。
安装
ntp
: 在基于Debian的系统:sudo apt update sudo apt install ntp
在基于RHEL的系统:
sudo yum install ntp # CentOS/RHEL 7 sudo dnf install ntp # Fedora/CentOS/RHEL 8+
配置
ntpd
: 编辑主配置文件/etc/ntp.conf
。sudo vim /etc/ntp.conf
找到或添加
server
行,例如:server ntp.aliyun.com iburst server time.nist.gov iburst # 你也可以添加更多可靠的NTP服务器
启动并启用
ntpd
服务:sudo systemctl enable ntpd sudo systemctl start ntpd sudo systemctl status ntpd
验证同步状态:
ntpq -p
这会列出所有NTP服务器的同步状态,包括它们的IP地址、层级、延迟等。
请注意,不建议同时运行chrony
和ntpd
服务,它们会相互冲突。通常选择其中一个即可。在现代Linux发行版中,chrony
已成为默认且推荐的时间同步服务。
为什么精确的系统时间对Linux服务器至关重要?
在我看来,Linux服务器的时间精确性,远不止是“看着舒服”那么简单。它直接关系到系统的稳定性、安全性乃至业务的连续性。你想想看,如果服务器时间不准,会发生什么?
首先是日志和审计。所有系统活动、应用事件都会被记录到日志文件中,如果时间戳混乱,那么故障排查、安全事件溯源几乎无从下手。你根本无法准确判断事件发生的顺序,更别提进行有效的关联分析了。这就像一本没有页码和时间戳的日记,完全失去了参考价值。
其次是安全机制。许多认证协议,比如Kerberos,对时间同步有严格要求。如果客户端和服务器时间偏差过大,认证就会失败。TLS/SSL证书的有效期检查也依赖于系统时间,时间不对,证书可能被错误地认为是过期或无效的,导致服务中断。更别提一些基于时间的一次性密码(TOTP)或双因素认证,时间不准就意味着无法登录。
再者是计划任务(Cron Jobs)和自动化脚本。我们经常会设置定时任务来执行备份、数据清理、报表生成等关键操作。如果系统时间不准,这些任务就可能在错误的时间执行,或者根本不执行,进而影响业务流程和数据一致性。设想一个凌晨3点需要跑的批处理任务,因为时间差错到了早上8点才开始,那业务数据就可能滞后甚至出错。
最后,在分布式系统和微服务架构中,时间同步更是基石。数据复制、事务处理、事件排序、分布式锁等都高度依赖于各个节点时间的精确一致性。如果节点间时间不同步,数据一致性问题、死锁、重复操作等噩梦般的场景就可能出现,导致整个系统行为异常,甚至数据损坏。所以,把时间同步做好,是构建可靠分布式系统的第一步。
Chrony与NTPD:我该如何选择时间同步服务?
说实话,刚接触Linux时间同步的时候,我也纠结过到底用chrony
还是ntpd
,毕竟网上资料五花八门,各有拥趸。后来才慢慢摸索出,其实没那么复杂,关键看你的具体需求和环境。
ntpd
(Network Time Protocol Daemon) 是NTP协议的“老前辈”了,它成熟、稳定,经过了时间的考验。它的优势在于:
- 历史悠久,社区庞大: 意味着它有非常详尽的文档和大量的实践案例,遇到问题也更容易找到解决方案。
- 功能全面:
ntpd
可以作为NTP客户端、服务器,甚至支持广播和多播模式。 - 精度高(在稳定网络下): 在网络连接持续稳定且高质量的环境下,
ntpd
能够提供非常高的时间同步精度。
然而,ntpd
也有它的“脾气”:
- 资源占用相对较高: 它会持续运行,并维持与NTP服务器的连接,这在资源受限的环境下可能不是最优选择。
- 启动同步较慢:
ntpd
通常需要较长时间来“驯服”系统时钟,达到稳定同步状态。 - 对网络中断不敏感: 如果网络连接频繁中断,
ntpd
恢复同步的速度可能较慢,或者需要较长时间才能重新稳定。
chrony
则是NTP协议的“后起之秀”,它被设计得更轻量、更灵活,更适应现代的计算环境。它的优势在于:
- 启动同步快:
chrony
采用更积极的算法,能够更快地同步系统时钟,尤其是在系统启动时。 - 资源占用低: 它的设计目标就是高效,因此在CPU和内存使用上都比
ntpd
更节省。 - 对网络中断适应性强:
chrony
能够更好地处理间歇性网络连接,或者在网络连接恢复后迅速重新同步。这对于笔记本电脑、虚拟机或者经常断网重连的服务器非常有用。 - 支持硬件时间戳: 在支持的硬件上,
chrony
可以利用硬件时间戳来进一步提高同步精度。 - 更小的时钟跳变:
chrony
倾向于“平滑”地调整时间,而不是像ntpd
那样在时间偏差较大时直接“跳变”时间(除非偏差实在太大)。这对于一些对时间敏感的应用来说,可以减少潜在的副作用。
我的建议是:
- 对于大多数现代Linux系统,尤其是服务器、虚拟机或需要快速同步的场景,
chrony
是首选。 它更高效、更灵活,且在性能和适应性上都有显著优势。许多主流发行版(如CentOS/RHEL 7+、Ubuntu 16.04+)也已将chrony
作为默认的时间同步服务。 - 如果你在维护一个非常老的系统,或者有非常特殊的、对
ntpd
有强依赖的遗留应用, 那么继续使用ntpd
可能是更稳妥的选择。 - 如果你的服务器是作为NTP服务器,为大量客户端提供时间服务, 并且需要非常精细的控制和高级功能,那么
ntpd
的成熟度和功能丰富性可能更符合你的需求。
总的来说,如果你没有特别的理由,直接选择chrony
就行,它能满足绝大多数场景的需求,并且用起来也更省心。
如何验证Linux系统时间同步是否成功并排除常见故障?
系统时间同步这事儿,光配置好还不行,关键得确认它真的在工作,而且工作得好。我见过不少情况,以为配好了就万事大吉,结果过了一段时间才发现时间根本没同步上,或者同步的源有问题。所以,验证和排查是必不可少的环节。
1. 验证同步状态:
使用
timedatectl
:timedatectl status
这条命令会给你一个概览。重点关注
NTP synchronized: yes
这一行。如果显示no
,那肯定没同步成功。同时,看看System clock synchronized: yes
和RTC in local TZ: no
(通常建议RTC使用UTC时间,所以这里显示no是正常的)。对于
chrony
:chronyc tracking
这是
chrony
最核心的检查命令。它会显示当前系统时间与哪个NTP源同步,同步的层级(Stratum)、参考ID、以及最重要的——System time
和Last offset
。System time
表示chrony
是否正在调整系统时间(normal
表示正在调整,leap
表示闰秒调整等)。Last offset
越接近0,表示时间越精确。chronyc sources -v
这条命令会列出所有配置的NTP源,以及它们的同步状态。关注
State
列,^
表示服务器,*
表示当前正在同步的服务器,+
表示备用服务器,?
表示无法访问,x
表示被剔除。Reach
值越高(最大255),表示NTP服务器的可达性越好。Offset
同样越接近0越好。对于
ntpd
:ntpq -p
这是
ntpd
的核心检查命令。它会列出所有NTP服务器的状态。关注reach
列(通常是八进制数,255表示可达性最好),st
(Stratum,层级,数字越小越好),以及offset
(时间偏差,越接近0越好)。*
表示当前正在同步的服务器,+
表示备用服务器。
2. 常见故障排除:
NTP服务未运行: 这是最常见的错误。
- 检查服务状态:
sudo systemctl status chronyd
或sudo systemctl status ntpd
。 - 如果服务未运行,尝试启动:
sudo systemctl start chronyd
或sudo systemctl start ntpd
。 - 检查是否开机自启动:
sudo systemctl is-enabled chronyd
。如果不是,启用它:sudo systemctl enable chronyd
。
- 检查服务状态:
防火墙阻挡: NTP服务默认使用UDP端口123。如果防火墙没有放行这个端口,NTP客户端就无法与NTP服务器通信。
- 检查防火墙规则:
sudo firewall-cmd --list-all
(CentOS/RHEL) 或sudo ufw status
(Ubuntu)。 - 允许UDP 123端口:
sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload
- 或
sudo ufw allow ntp
- 如果是云服务器,还要检查安全组规则,确保UDP 123端口是开放的。
- 检查防火墙规则:
NTP服务器地址配置错误或不可达:
- 检查
/etc/chrony.conf
或/etc/ntp.conf
中的NTP服务器地址是否正确。 - 尝试ping一下这些NTP服务器的地址,看看是否能ping通,确认网络连通性。
- 尝试使用
ntpdate -q
(如果安装了ntpdate)或chronyd -q 'pool
来手动查询,看是否能获取到时间。' - 确保NTP服务器是公开可用的,或者是在你的内网中可以访问到的。
- 检查
DNS解析问题: 如果你配置的是域名(如
ntp.aliyun.com
),确保你的系统可以正确解析这些域名。- 尝试
dig ntp.aliyun.com
或nslookup ntp.aliyun.com
。
- 尝试
系统时间偏差过大: 如果系统时间与NTP服务器时间偏差太大(通常超过1000秒),
chrony
或ntpd
可能无法直接同步。- 这种情况下,可以先手动使用
sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"
将时间大致调整到接近正确的时间,然后再启动NTP服务进行精确同步。 chrony
在处理大偏差时比ntpd
更灵活,但极端情况仍需手动干预。
- 这种情况下,可以先手动使用
NTP服务器本身问题: 极少数情况下,你使用的NTP服务器可能出现故障或负载过高。
- 尝试更换配置文件中的NTP服务器,使用多个不同的NTP源,增加冗余。
排除故障时,耐心和逻辑很重要。一步步检查,从服务状态到网络连通性,再到配置细节,通常都能找到问题所在。
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

- 上一篇
- Golang装饰器模式详解与实战技巧

- 下一篇
- Golang协程控制与取消机制解析
-
- 文章 · linux | 20分钟前 |
- Linux系统安全加固方法详解
- 192浏览 收藏
-
- 文章 · linux | 23分钟前 | 权限管理 chmod chown setfacl LinuxACL权限
- LinuxACL权限设置全解析
- 268浏览 收藏
-
- 文章 · linux | 36分钟前 |
- LinuxPython环境管理:virtualenv与conda对比
- 387浏览 收藏
-
- 文章 · linux | 1小时前 |
- Linux安全补丁管理与修复方法
- 309浏览 收藏
-
- 文章 · linux | 1小时前 | 自动化 系统安全 权限管理 Linux用户权限回收 防止滥用
- Linux权限回收方法与安全防护技巧
- 480浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux文件校验教程:md5sum与sha256sum详解
- 165浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux定时任务管理,cron与at实战教程
- 473浏览 收藏
-
- 文章 · linux | 3小时前 |
- Linux数据备份与恢复全攻略
- 119浏览 收藏
-
- 文章 · linux | 3小时前 |
- LinuxSSH安全配置及远程管理技巧
- 185浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 511次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 498次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- TextIn智能文字识别平台
- TextIn智能文字识别平台,提供OCR、文档解析及NLP技术,实现文档采集、分类、信息抽取及智能审核全流程自动化。降低90%人工审核成本,提升企业效率。
- 7次使用
-
- 简篇AI排版
- SEO 简篇 AI 排版,一款强大的 AI 图文排版工具,3 秒生成专业文章。智能排版、AI 对话优化,支持工作汇报、家校通知等数百场景。会员畅享海量素材、专属客服,多格式导出,一键分享。
- 7次使用
-
- 小墨鹰AI快排
- SEO 小墨鹰 AI 快排,新媒体运营必备!30 秒自动完成公众号图文排版,更有 AI 写作助手、图片去水印等功能。海量素材模板,一键秒刷,提升运营效率!
- 8次使用
-
- Aifooler
- AI Fooler是一款免费在线AI音频处理工具,无需注册安装,即可快速实现人声分离、伴奏提取。适用于音乐编辑、视频制作、练唱素材等场景,提升音频创作效率。
- 7次使用
-
- 易我人声分离
- 告别传统音频处理的繁琐!易我人声分离,基于深度学习的AI工具,轻松分离人声和背景音乐,支持在线使用,无需安装,简单三步,高效便捷。
- 8次使用
-
- 命令行工具:应对Linux服务器安全挑战的利器
- 2023-10-04 501浏览
-
- 如何使用Docker进行容器的水平伸缩和负载均衡
- 2023-11-07 501浏览
-
- linux .profile的作用是什么
- 2024-04-07 501浏览
-
- 如何解决s权限位引发postfix及crontab异常
- 2024-11-21 501浏览
-
- 如何通过脚本自动化Linux上的K8S安装
- 2025-02-17 501浏览