GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

Linux 校时

给 Linux 校时,最佳实践是用 timedatectl 统一管理,并开启 NTP 自动同步。

绝大多数现代 Linux 发行版(CentOS 7+、Ubuntu 18.04+、Debian 9+、openSUSE、麒麟等)均已内置这套方案,无需再装多余软件。

先看这张流程图,1 分钟定位到你需要的场景:

 

✅ 方案A:开启 NTP 自动同步(推荐,日常用)

这是最标准、零维护的做法,系统会持续微调时间,永远不准不了。

bash
# 1. 查看当前时间状态(关键看 NTP service 和 System clock synchronized)
timedatectl status

# 2. 开启自动同步(若输出显示 inactive)
sudo timedatectl set-ntp true

# 3. 验证服务是否在跑
systemctl status systemd-timesyncd
  • 绝大多数发行版默认已开启,无需任何配置 。

  • Ubuntu 24.10 之后默认同步服务从 systemd-timesyncd 换成了 chronytimedatectl 会自动适配,不需要你纠结 。


🕐 方案B:手动强制校时(临时救急)

如果服务器时间差几分钟/小时,或者刚开机时因证书问题无法上网,直接手动拨正。

关键原则:必须先关 NTP,否则改完立刻被自动同步覆盖 。

bash
# 1. 临时关闭自动同步
sudo timedatectl set-ntp false

# 2. 手动设置精确时间(格式:YYYY-MM-DD HH:MM:SS)
sudo timedatectl set-time '2026-02-12 15:30:00'

# 3. 将系统时间写回硬件(避免重启丢失)
sudo hwclock --systohc

# 4. 重新开启自动同步
sudo timedatectl set-ntp true

老派但有效的单次同步(适合没有 timedatectl 的极老系统):

bash
sudo ntpdate ntp.aliyun.com      # 从阿里云拉取一次时间

🏢 方案C:内网环境(无公网)

企业内网服务器不能上外网,需要指向内部的 NTP 服务器。

  1. 编辑 NTP 配置文件:

bash
sudo vim /etc/systemd/timesyncd.conf
  1. 将 [Time] 部分改为你的内网 NTP 地址(可以是 IP 或域名):

text
[Time]
NTP=192.168.1.100
FallbackNTP=ntp.aliyun.com      # 可选,有外网时兜底
  1. 重启服务生效:

bash
sudo systemctl restart systemd-timesyncd
timedatectl status
  1. 防火墙提醒:内网 NTP 走 UDP 123 端口,需确保策略放行 。


🌍 方案D:时区设置(刚装完系统最常见)

刚装完系统,用 date 命令看到的时间不是北京时间——这不是时间不准,是时区没设对。

bash
# 1. 查看当前时区
timedatectl | grep "Time zone"

# 2. 列出所有时区,找到 Asia/Shanghai
timedatectl list-timezones | grep Asia

# 3. 设置为中国标准时间
sudo timedatectl set-timezone Asia/Shanghai

其他常用时区:Asia/Hong_KongAsia/TokyoAmerica/New_YorkEurope/London


⚙️ 硬件时钟相关(进阶)

如果你发现系统时间是对的,但重启后变回原始时间,说明硬件时钟(BIOS 时间)没同步。

查看硬件时钟:

bash
sudo hwclock --show

手动同步(系统时间→硬件):

bash
sudo hwclock --systohc      # 推荐,写在关机脚本里也可

双系统(Windows+Linux)用户特别注意:Windows 认为硬件时钟是本地时间,Linux 默认认为它是 UTC 时间。两者冲突会导致切换系统时间错乱。
解决:让 Linux 迁就 Windows 更容易,执行以下命令即可:

bash
sudo timedatectl set-local-rtc 1

执行后 timedatectl 会显示 RTC in local TZ: yes,双系统时间就和谐了 。


🧭 附录:快速参考

 
你想做什么一句话命令
查看完整时间状态 timedatectl status
开启自动同步 sudo timedatectl set-ntp true
关闭自动同步(手动改时间前必须做) sudo timedatectl set-ntp false
手动设置时间 sudo timedatectl set-time '2026-02-12 15:30:00'
设置时区 sudo timedatectl set-timezone Asia/Shanghai
系统时间→硬件时钟 sudo hwclock --systohc
强制单次 NTP 同步(老命令) sudo ntpdate ntp.aliyun.com
RTC 存本地时间(双系统) sudo timedatectl set-local-rtc 1

绝大多数情况,你只需要:

bash
timedatectl status                     # 看一眼
sudo timedatectl set-timezone Asia/Shanghai   # 改时区
sudo timedatectl set-ntp true          # 自动校时

三行命令,时间从此正确。

 
 

posted on 2026-02-12 15:21  GKLBB  阅读(62)  评论(0)    收藏  举报