在Linux和Unix-like系统中,时间同步是确保系统日志、分布式任务调度、安全认证等关键功能正常运行的基础,时间同步的命令主要依赖于网络时间协议(NTP)及其简化版本,通过这些命令可以将系统时间与标准时间源对齐,避免因时间偏差导致的问题,以下将详细介绍常用的时间同步命令及其使用方法、参数配置和注意事项。

date命令:手动调整系统时间
date
命令是最基础的时间查看和设置工具,虽然不直接用于网络同步,但常用于手动校准时间或验证时间同步结果。
基本用法:
- 查看当前系统时间:
date
- 设置系统时间(需root权限):
date -s "2024-05-20 14:30:00"
- 查看UTC时间:
date -u
注意事项:手动设置的时间重启后会失效,且可能与硬件时间不同步,需配合hwclock
命令(hwclock --systohc
将系统时间写入硬件时钟)使用。
ntpdate命令:快速同步时间(已废弃)
ntpdate
是早期用于NTP同步的简单工具,通过向NTP服务器发送请求并调整系统时间。
基本用法:
ntpdate -u ntp.aliyun.com # 指定阿里云NTP服务器同步
参数说明:

-u
:使用UDP模式(避免防火墙阻塞)-q
:仅查询不同步,测试服务器延迟
废弃原因:ntpdate
属于“跳跃式同步”,直接跳变系统时间,可能影响依赖稳定时间的应用,现代系统推荐使用chrony
或ntpd
。
ntpd服务:平滑同步时间(守护进程)
ntpd
是NTP的守护进程,通过持续微调系统时间,实现平滑同步,适合长期运行的系统。
安装与配置:
- 安装:
yum install ntp -y
(CentOS/RHEL)或apt install ntp -y
(Debian/Ubuntu) - 编辑配置文件
/etc/ntp.conf
,添加或修改服务器地址:server ntp.aliyun.com iburst server time.windows.com iburst
iburst
参数表示首次同步时快速交换数据包。 - 启动服务:
systemctl start ntpd
,并设置开机自启:systemctl enable ntpd
常用命令:

- 查看同步状态:
ntpq -p
输出表格中包含remote
(服务器地址)、refid
(参考时钟源)、st
(层级)、when
(上次同步时间)、poll
(查询间隔)、reach
(可达性)等列。 - 强制同步:
ntpd -gq
(-g
允许时间跳变,-q
退出后停止服务)
特点:ntpd
会根据网络延迟逐步调整时间,避免突变,但对系统时间精度要求较高时,需确保内核参数/proc/sys/x86/rtc_max_drift
配置合理。
chrony服务:高效时间同步(推荐)
chrony
是比ntpd
更轻量、更高效的同步工具,尤其适合在网络不稳定或虚拟化环境中使用。
安装与配置:
- 安装:
yum install chrony -y
或apt install chrony -y
- 编辑
/etc/chrony/chrony.conf
:server ntp.aliyun.com iburst server time.windows.com iburst allow 192.168.1.0/24 # 允许局域网内其他设备同步(可选)
- 启动服务:
systemctl start chronyd
,systemctl enable chronyd
常用命令:
- 查看同步状态:
chronyc tracking
输出包含System time
(系统时间偏差)、Last offset
(上次调整量)、RMS offset
(均方根偏差)等。 - 查看服务器列表:
chronyc sources -v
- 手动同步:
chronyc -a makestep
(强制调整时间)
优势:chrony
对网络延迟和抖动更敏感,同步速度更快,且支持硬件时钟同步(chronyc -a burst
)。
timedatectl命令:控制 systemd 时间服务
timedatectl
是systemd
提供的时间管理工具,可统一控制NTP服务、硬件时钟等。
基本用法:
- 查看时间状态:
timedatectl status
- 启用NTP同步:
timedatectl set-ntp true
- 设置时区:
timedatectl set-timezone Asia/Shanghai
- 禁用NTP:
timedatectl set-ntp false
注意事项:启用timedatectl
的NTP功能后,系统会自动优先使用chronyd
或ntpd
,无需手动管理服务。
Windows系统时间同步命令
Windows系统可通过命令行同步时间,主要依赖w32tm
工具。
基本用法:
- 同步时间:
w32tm /resync /force
- 查看时间源:
w32tm /query /status
- 配置时间源:
w32tm /config /syncfromflags:manual /manualpeerlist:"time.windows.com"
- 重启时间服务:
net stop w32time && net start w32time
默认配置:Windows会自动从time.windows.com
同步,但可通过组策略修改默认时间源。
时间同步的最佳实践
- 选择合适的时间源:
- 公共NTP服务器:如阿里云(
ntp.aliyun.com
)、NTP Pool(pool.ntp.org
)。 - 内部NTP服务器:企业环境建议搭建本地NTP服务器,减少对外部依赖。
- 公共NTP服务器:如阿里云(
- 避免频繁同步:
ntpd
和chrony
会自动调整同步频率,手动触发(如ntpdate
)可能增加服务器负载。 - 防火墙配置:确保NTP端口(UDP 123)开放,避免同步失败。
- 虚拟化环境:虚拟机建议使用
chrony
,并开启时钟同步功能(如VMware的tools
)。
相关问答FAQs
Q1: 为什么使用chrony
而不是ntpd
?
A: chrony
在网络不稳定或高延迟环境下表现更优,同步速度更快,且资源占用更低,它支持硬件时钟同步,适合虚拟机和容器化环境,而ntpd
同步过程较保守,对时间精度要求极高的场景(如金融交易)仍可使用,但现代系统推荐优先选择chrony
。
Q2: 如何确认时间同步是否成功?
A: 可通过以下方式验证:
- Linux系统:运行
chronyc tracking
查看Last offset
值(理想情况下应接近0),或ntpq -p
检查reach
列是否为377
(八进制,表示所有同步包均收到)。 - Windows系统:执行
w32tm /query /status
,查看Source
是否为配置的时间服务器,以及Skew
值(时间偏差)是否在毫秒级。 - 跨主机验证:在不同主机上执行
date
命令,对比时间差异是否在可接受范围内(如±1秒)。