在Linux系统中,时间同步是保证日志准确、任务调度正常以及安全通信的基础。当服务器时间出现偏差时,可能会导致程序报错、证书失效或数据库主从异常。解决Linux时间同步问题,通常可以从手动同步、配置自动同步服务和检查时区三个方面入手。

一、使用ntpdate手动同步时间
如果系统只是偶尔时间不准,且未长期运行同步服务,可以使用ntpdate命令立即向时间服务器同步一次。需要先安装相关工具,然后执行同步。
# 安装ntpdate(Debian/Ubuntu) sudo apt-get install ntpdate -y # 向阿里云NTP服务器同步时间 sudo ntpdate pool.ntp.org # 若提示端口占用可先停掉ntpd sudo service ntp stop sudo ntpdate pool.ntp.org
二、配置NTP守护进程自动同步
对于长期运行的服务器,建议配置ntpd服务进行持续的时间校准。编辑配置文件指定上游服务器后启动服务即可。
# 安装ntpd sudo yum install ntp -y # 修改/etc/ntp.conf,添加服务器 server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst # 启动并设置开机自启 sudo systemctl start ntpd sudo systemctl enable ntpd
使用chrony替代ntpd
在新版Linux发行版中,chrony更为常用,尤其适合虚拟机或网络不稳定的环境。
# 安装chrony sudo apt-get install chrony -y # 启动chronyd sudo systemctl start chrony sudo systemctl enable chrony # 查看同步状态 chronyc tracking
三、检查时区与硬件时钟
时间显示错误有时并非不同步,而是时区配置不对。可用以下命令确认并修改时区,并同步硬件时钟。
# 查看当前时区 timedatectl # 设置为上海时区 sudo timedatectl set-timezone Asia/Shanghai # 将系统时间写入硬件时钟 sudo hwclock --systohc
四、常见问题排查
- 防火墙阻挡UDP 123端口会导致同步失败,需放行NTP端口。
- 虚拟机暂停后时间变慢,可在宿主机开启时间同步或使用chrony。
- 使用
timedatectl status可查看NTP是否启用。
| 方法 | 适用场景 | 命令示例 |
|---|---|---|
| ntpdate | 临时手动校准 | ntpdate pool.ntp.org |
| ntpd | 传统长期同步 | systemctl start ntpd |
| chrony | 不稳定网络环境 | chronyc tracking |
通过上述方式,大多数Linux时间同步问题都能被有效解决。建议生产环境使用chrony或ntpd常驻运行,并配合监控告警及时发现偏移。