doracoin revised this gist . Go to revision
1 file changed, 85 insertions
manual_time_fix.sh(file created)
| @@ -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 | + | ||
Newer
Older