在Linux和Unix-like系统中,同步服务器时间是一个常见的系统管理任务,确保系统时间的准确性对于日志记录、认证服务、定时任务等至关重要,以下是几种常用的同步服务器时间命令及其详细使用方法。

最常用的工具是ntpdate
,这是一个简单的NTP(Network Time Protocol)客户端,用于从NTP服务器同步时间,基本语法为ntpdate -s [NTP服务器地址]
,其中-s
选项表示将时间同步结果记录到系统日志中,使用中国国家授时中心的NTP服务器ntp.ntsc.ac.cn
,可以执行ntpdate -s ntp.ntsc.ac.cn
,需要注意的是,ntpdate
在较新的Linux发行版中可能已被弃用,取而代之的是更现代的chrony
或ntpd
服务。
chrony
是一个高效的NTP实现,特别适合在虚拟机和不稳定网络环境中使用,它由两个核心组件组成:chronyd
(后台守护进程)和chronyc
(命令行工具),要使用chrony
同步时间,首先需要安装chrony
包(在Ubuntu/Debian中使用sudo apt install chrony
,在CentOS/RHEL中使用sudo yum install chrony
),安装完成后,编辑/etc/chrony/chrony.conf
文件,添加或修改NTP服务器地址,例如server ntp.ntsc.ac.cn iburst
,其中iburst
选项表示在服务启动时快速同步时间,保存文件后,启动并启用chronyd
服务:sudo systemctl start chronyd
和sudo systemctl enable chronyd
,使用chronyc tracking
命令可以查看时间同步状态,chronyc sources
则显示当前使用的NTP服务器源。
对于需要长期运行NTP服务的场景,可以使用ntpd
(NTP守护进程)。ntpd
与ntpdate
不同,它会逐步调整系统时间,而不是突然跳变,这对某些应用场景更友好,安装ntpd
后(Ubuntu/Debian中使用sudo apt install ntp
,CentOS/RHEL中通常已预装),编辑/etc/ntp.conf
文件,添加NTP服务器,如server 0.pool.ntp.org
,启动并启用服务:sudo systemctl start ntpd
和sudo systemctl enable ntpd
,使用ntpq -p
命令可以查看NTP服务器连接状态和同步情况。
Windows系统同步时间通常使用w32tm
命令,以管理员身份打开命令提示符,执行w32tm /resync /force
可以强制同步时间,查看时间源使用w32tm /query /status
,配置时间源可以通过w32tm /config /syncfromflags:manual /manualpeerlist:"time.windows.com"
,然后重启Windows时间服务net stop w32time && net start w32time
。

以下是常用同步命令的总结表格:
工具/命令 | 适用系统 | 基本语法示例 | 特点 |
---|---|---|---|
ntpdate | Linux/Unix | ntpdate -s ntp.ntsc.ac.cn |
简单直接,适合一次性同步 |
chronyd/chronyc | Linux | sudo systemctl start chronyd |
高效,适合虚拟机和动态环境 |
ntpd | Linux/Unix | sudo systemctl start ntpd |
逐步调整时间,适合长期运行服务 |
w32tm | Windows | w32tm /resync /force |
Windows系统内置,无需额外安装 |
在同步时间时,需要注意防火墙设置是否允许NTP通信(默认UDP端口123),以及确保系统时间与硬件时间(CMOS时间)一致,可以使用hwclock --systohc
命令将系统时间写入硬件时间。
相关问答FAQs:
-
问:为什么使用
chrony
而不是ntpdate
?
答:chrony
是更现代的NTP实现,相比ntpdate
,它能在网络不稳定或高延迟环境下更快地同步时间,并且支持硬件时钟的校准。ntpdate
在同步时会突然跳变时间,可能影响依赖系统时间的应用,而chrony
会逐步调整时间,更加平滑。chrony
的资源占用更低,特别适合虚拟化和容器化环境。(图片来源网络,侵删) -
问:如何检查时间是否同步成功?
答:在Linux系统中,可以使用date
命令查看当前系统时间,对比NTP服务器的时间是否一致;对于chrony
,执行chronyc tracking
查看System time
是否与Source
时间接近;对于ntpd
,使用ntpq -p
查看reach
列是否为非零值(表示与服务器通信正常),st
列(stratum)越小表示时间源越可靠,在Windows中,可通过w32tm /query /status
查看Source
和Sync Time
状态。