Utoljára aktív 1773939494

适用于chrony

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