检查当前系统时间
bash
date
如果时间明显不正确,可以进一步检查硬件时钟(BIOS 时间):
bash
bash复制代码
hwclock --show
同步时间(推荐方式)
为了确保系统时间准确,建议使用 NTP(网络时间协议)服务同步时间。
1. 安装和启动 chronyd
或 ntpd
-
CentOS 7 及以上版本默认使用
chronyd
:
bashsudo yum install -y chrony sudo systemctl enable chronyd sudo systemctl start chronyd
-
如果需要使用
ntpd
(旧版本 CentOS 可能使用):
bashsudo yum install -y ntp sudo systemctl enable ntpd sudo systemctl start ntpd
2. 验证时间同步状态
-
对于
chronyd
:bashbash复制代码 chronyc tracking
检查
Reference ID
是否为有效的 NTP 服务器地址。 -
对于
ntpd
:bashbash复制代码 ntpq -p
检查输出中是否有
*
标记的 NTP 服务器。
3. 强制手动同步时间
-
对于
chronyd
:
bashbash复制代码 sudo chronyc -a makestep
-
对于
ntpd
:
bashbash复制代码 sudo ntpdate pool.ntp.org
检查时区设置
如果时间正确但时区不正确,可以调整时区:
-
查看当前时区:
bashbash复制代码 timedatectl
示例输出:
Local time: Wed 2023-10-11 10:00:00 UTC Time zone: UTC (UTC, +0000)
-
列出所有可用时区:
bashbash复制代码 timedatectl list-timezones
-
设置时区(例如设置为上海时区):
bashbash复制代码 sudo timedatectl set-timezone Asia/Shanghai
-
验证时区设置:
bashbash复制代码 timedatectl
硬件时钟与系统时钟同步
如果系统时间和硬件时间不一致,可以手动同步:
-
将系统时间写入硬件时钟:
bashbash复制代码 sudo hwclock --systohc
-
将硬件时钟写入系统时间:
bashbash复制代码 sudo hwclock --hctosys
排查时间不同步问题
如果时间仍然不同步,可以检查以下内容:
-
网络连接:确保服务器可以访问 NTP 服务器。
-
测试网络连通性:
bashbash复制代码 ping pool.ntp.org
-
-
防火墙设置:确保防火墙允许 NTP 流量(UDP 123 端口)。
-
开放端口:
bashsudo firewall-cmd --add-port=123/udp --permanent sudo firewall-cmd --reload
-
-
SELinux 设置:如果启用了 SELinux,确保没有阻止时间同步服务。
-
检查日志:查看 NTP 或 Chrony 的日志文件以获取更多信息。
-
Chrony 日志:
bashbash复制代码 sudo journalctl -u chronyd
-
NTP 日志(如果使用
ntpd
):
bashbash复制代码 sudo tail -f /var/log/ntp.log
-
总结常用命令
操作 | 命令 |
---|---|
查看当前系统时间 | date |
手动设置系统时间 | sudo date -s "2023-10-11 10:00:00" |
安装和启动 chronyd |
sudo yum install -y chrony && sudo systemctl enable chronyd && sudo systemctl start chronyd |
强制同步时间(chronyd ) |
sudo chronyc -a makestep |
列出所有可用时区 | timedatectl list-timezones |
设置时区 | sudo timedatectl set-timezone Asia/Shanghai |
将系统时间写入硬件时钟 | sudo hwclock --systohc |