Dernière activité 1773939494

适用于chrony

doracoin's Avatar doracoin a révisé ce gist 1773939494. Aller à la révision

1 file changed, 85 insertions

manual_time_fix.sh(fichier créé)

@@ -0,0 +1,85 @@
1 + #!/bin/bash
2 +
3 + # =========================
4 + # 手动时间校准工具(适用于 chrony 环境)
5 + # =========================
6 +
7 + echo "=============================="
8 + echo " 手动时间校准工具(chrony环境)"
9 + echo "=============================="
10 +
11 + # 1. 检查是否为 root
12 + if [ "$EUID" -ne 0 ]; then
13 + echo "[ERROR] 请使用 root 用户执行此脚本"
14 + exit 1
15 + fi
16 +
17 + # 2. 显示当前时间状态
18 + echo ""
19 + echo "[INFO] 当前系统时间:"
20 + date
21 +
22 + echo ""
23 + echo "[INFO] 当前时间同步状态(timedatectl):"
24 + timedatectl status
25 +
26 + # 3. 停止 chrony 服务
27 + echo ""
28 + echo "[STEP] 停止 chrony 服务..."
29 + systemctl stop chronyd
30 +
31 + # 4. 禁止开机自启(防止重启后又同步回去)
32 + echo "[STEP] 禁用 chrony 开机启动..."
33 + systemctl disable chronyd
34 +
35 + # 5. 关闭 systemd 的 NTP 自动同步(双保险)
36 + echo "[STEP] 关闭系统级 NTP 自动同步..."
37 + timedatectl set-ntp false
38 +
39 + # 6. 再次确认状态
40 + echo ""
41 + echo "[INFO] 当前时间同步状态(确认已关闭):"
42 + timedatectl status | grep "NTP"
43 +
44 + # 7. 提示用户输入时间
45 + echo ""
46 + echo "=============================="
47 + echo "请输入你要设置的时间"
48 + echo "格式:YYYY-MM-DD HH:MM:SS"
49 + echo "示例:2026-03-19 14:30:00"
50 + echo "=============================="
51 + read -p "请输入时间: " NEW_TIME
52 +
53 + # 8. 设置系统时间
54 + echo ""
55 + echo "[STEP] 设置系统时间..."
56 + date -s "$NEW_TIME"
57 +
58 + # 9. 同步硬件时钟(非常关键)
59 + echo "[STEP] 同步到硬件时钟(RTC)..."
60 + hwclock --systohc
61 +
62 + # 10. 最终校验
63 + echo ""
64 + echo "[INFO] 设置后的系统时间:"
65 + date
66 +
67 + echo ""
68 + echo "[INFO] 硬件时钟时间:"
69 + hwclock -r
70 +
71 + echo ""
72 + echo "=============================="
73 + echo " 时间设置完成"
74 + echo "=============================="
75 +
76 + # 11. 风险提示
77 + echo ""
78 + echo "[WARNING] 注意事项:"
79 + echo "1. 当前已完全关闭时间同步,时间不会自动校准"
80 + echo "2. 如果时间漂移,会持续误差"
81 + echo "3. 某些服务(如数据库、JWT、分布式系统)可能受时间影响"
82 + echo "4. 如需恢复,请执行:"
83 + echo " systemctl enable chronyd && systemctl start chronyd"
84 + echo " timedatectl set-ntp true"
85 +
Plus récent Plus ancien