#!/bin/bash # ========================= # 手动时间校准工具(适用于 chrony 环境) # ========================= echo "==============================" echo " 手动时间校准工具(chrony环境)" echo "==============================" # 1. 检查是否为 root if [ "$EUID" -ne 0 ]; then echo "[ERROR] 请使用 root 用户执行此脚本" exit 1 fi # 2. 显示当前时间状态 echo "" echo "[INFO] 当前系统时间:" date echo "" echo "[INFO] 当前时间同步状态(timedatectl):" timedatectl status # 3. 停止 chrony 服务 echo "" echo "[STEP] 停止 chrony 服务..." systemctl stop chronyd # 4. 禁止开机自启(防止重启后又同步回去) echo "[STEP] 禁用 chrony 开机启动..." systemctl disable chronyd # 5. 关闭 systemd 的 NTP 自动同步(双保险) echo "[STEP] 关闭系统级 NTP 自动同步..." timedatectl set-ntp false # 6. 再次确认状态 echo "" echo "[INFO] 当前时间同步状态(确认已关闭):" timedatectl status | grep "NTP" # 7. 提示用户输入时间 echo "" echo "==============================" echo "请输入你要设置的时间" echo "格式:YYYY-MM-DD HH:MM:SS" echo "示例:2026-03-19 14:30:00" echo "==============================" read -p "请输入时间: " NEW_TIME # 8. 设置系统时间 echo "" echo "[STEP] 设置系统时间..." date -s "$NEW_TIME" # 9. 同步硬件时钟(非常关键) echo "[STEP] 同步到硬件时钟(RTC)..." hwclock --systohc # 10. 最终校验 echo "" echo "[INFO] 设置后的系统时间:" date echo "" echo "[INFO] 硬件时钟时间:" hwclock -r echo "" echo "==============================" echo " 时间设置完成" echo "==============================" # 11. 风险提示 echo "" echo "[WARNING] 注意事项:" echo "1. 当前已完全关闭时间同步,时间不会自动校准" echo "2. 如果时间漂移,会持续误差" echo "3. 某些服务(如数据库、JWT、分布式系统)可能受时间影响" echo "4. 如需恢复,请执行:" echo " systemctl enable chronyd && systemctl start chronyd" echo " timedatectl set-ntp true"