Linux虚拟机时间同步设置方法
NTP(网络时间协议)是Linux系统最常用的时间同步方案,通过连接公共或私有NTP服务器实现精准同步。
apt,CentOS/RHEL使用yum):# Debian/Ubuntu
sudo apt update && sudo apt install ntp -y
# CentOS/RHEL
sudo yum install ntp -y
/etc/ntp.conf,添加公共NTP服务器(如pool.ntp.org),并启用iburst选项(加快初次同步速度):server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst
sudo systemctl start ntpd # 启动服务
sudo systemctl enable ntpd # 开机自启
ntpq -p命令查看NTP服务器同步状态,确认*标记的服务器为当前同步源。Chrony是NTP的轻量级替代工具,针对网络延迟、间歇性断开等情况优化,更适合虚拟机环境。
# Debian/Ubuntu
sudo apt update && sudo apt install chrony -y
# CentOS/RHEL
sudo yum install chrony -y
/etc/chrony/chrony.conf,添加NTP服务器并启用iburst:server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
sudo systemctl start chronyd # 启动服务
sudo systemctl enable chronyd # 开机自启
chronyc tracking查看同步详情(如时间偏移量、漂移率),或chronyc sources查看同步源状态。VMware Tools(VMware)或Hyper-V Integration Services(Hyper-V)可实现虚拟机与宿主机时间自动同步,避免网络依赖。
若需临时修正时间(如测试环境),可使用以下命令:
date命令指定格式(YYYY-MM-DD HH:MM:SS):sudo date -s "2025-10-18 14:30:00"
hwclock将系统时间写入硬件时钟(避免重启后失效):sudo hwclock --systohc
ntpdate命令(需提前安装ntpdate)从NTP服务器拉取时间:sudo ntpdate pool.ntp.org
通过脚本定期运行同步命令,确保时间长期准确。
/usr/local/bin/sync_time.sh):#!/bin/bash
# 使用chrony同步时间(若未安装可替换为ntpdate)
chronyc -a makestep # 强制立即同步
chmod +x /usr/local/bin/sync_time.sh
crontab -e添加每小时同步一次的任务:0 * * * * /usr/local/bin/sync_time.sh
timedatectl set-timezone <时区>设置,如Asia/Shanghai)。sudo ufw allow 123/udp)。chronyc tracking或ntpq -p检查同步状态,及时排查服务异常。