centos时间配置详解
时间同步的两种方式chrony vs ntp
ntp:传统的时间同步配置,既可以当服务端,也可以当客户端
chrony:新式时间配置,采用微调修改同步时间
常见命令
1 | #查看时间 |
问题
修改时间过后,时间过一段时间又不对了
分析,怀疑是chronyc慢慢修正成了错误时间
解决过程:
通过把chronyc停用,换成ntpd进行同步时间,过了一天,时间还是改变了(RTC+8),发现ntpd服务在3点的时候停止了
添加时间ntpd服务是否运行的检测的脚本
check_ntp.sh
1
2
3
4
5
6
7
8
# 检查 NTP 服务是否正在运行
if systemctl is-active --quiet ntpd; then
echo "NTP service is running."
else
echo "NTP service is not running."
fi添加时间是否同步
time_sync_status.sh
1
2
3
4
5
6
7
8
# 检查时间是否同步
if timedatectl | grep "NTP synchronized: yes" > /dev/null; then
echo "System time is synchronized."
else
echo "System time is not synchronized."
fi整合服务检测,与时间同步
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
LOG_FILE="/var/log/sync_time.log"
# 检查系统时间是否正确
if timedatectl | grep "NTP synchronized: yes" > /dev/null; then
echo "$(date): System time is synchronized." >> "$LOG_FILE"
echo "$(timedatectl)" >> "$LOG_FILE"
else
echo "$(date): System time is not synchronized." >> "$LOG_FILE"
echo "$(timedatectl)" >> "$LOG_FILE"
# 检查 NTP 服务状态
if systemctl is-active --quiet ntpd; then
echo "$(date): NTP service is running. Synchronizing time..." >> "$LOG_FILE"
echo "$(timedatectl)" >> "$LOG_FILE"
systemctl stop ntpd # 停止 NTP 服务,以便手动同步时间
ntpd -gq # 强制同步时间
hwclock --systohc # 同步时间到 RTC
systemctl start ntpd # 重新启动 NTP 服务
echo "$(date): Time synchronized successfully." >> "$LOG_FILE"
echo "$(timedatectl)" >> "$LOG_FILE"
else
echo "$(date): NTP service is not running. " >> "$LOG_FILE"
echo "$(timedatectl)" >> "$LOG_FILE"
ntpd -gq # 强制同步时间
hwclock --systohc # 同步时间到 RTC
systemctl start ntpd # 重新启动 NTP 服务
echo "$(date): Time synchronized successfully." >> "$LOG_FILE"
echo "$(timedatectl)" >> "$LOG_FILE"
fi
fi创建一个定时任务
crontab -e
1
*/1 * * * * /root/sync_time.sh
后面观察日志
tail -f /var/log/sync_time.log
即可,执行more /var/log/sync_time.log | grep " is not " -A 28 -B 10
进行查看什么时候通不过时间
参考: