Linux timedatectl 时间同步配置方法

6次阅读

timedatectl 是 linux 中管理时间、时区和 ntp 同步的核心命令,依赖 systemd-timesyncd 服务;需启用服务、配置国内 ntp 源、正确设置时区,并验证同步状态以确保系统时间准确。

Linux timedatectl 时间同步配置方法

Linux 系统中,timedatectl 是管理本地时间、时区和网络时间同步(NTP)的核心命令,它底层调用 systemd-timesyncd 服务。正确配置可确保系统时间长期准确,避免因时间偏差导致日志混乱、证书失效或集群通信异常等问题。

检查当前时间与同步状态

运行以下命令快速查看系统时间、时区及 NTP 同步是否启用并生效:

timedatectl status

重点关注几项输出:

  • Local time:本地时间(受时区影响)
  • Universal time:UTC 时间(基准时间)
  • Time zone:当前时区(如 Asia/Shanghai
  • System clock synchronized:是否已成功同步(yes 表示正常)
  • NTP service:NTP 服务状态(应为 active

启用并启动 systemd-timesyncd 服务

默认部分发行版(如 centos Stream、debian 12+)可能未启用该服务。需手动开启:

sudo systemctl enable --now systemd-timesyncd

启用后,服务会自动在系统启动时运行,并按默认策略(约每 30 分钟)向上游 NTP 服务器发起同步请求。

若服务启动失败,常见原因包括:

  • 防火墙阻断 udp 123 端口(需放行)
  • 系统被其他 NTP 服务(如 ntpdchronyd)占用,需停用冲突服务
  • 网络不可达或 DNS 解析失败(systemd-timesyncd 默认使用域名,如 time1.google.com

自定义 NTP 服务器(国内推荐)

为提升同步稳定性与速度,建议将默认 NTP 源替换为国内可靠服务器。编辑配置文件:

sudo nano /etc/systemd/timesyncd.conf

取消注释 Servers= 行,并填入国内 NTP 地址,例如:

Servers=ntp.aliyun.com ntp1.aliyun.com cn.pool.ntp.org

保存后重启服务使配置生效:

sudo systemctl restart systemd-timesyncd

注意:systemd-timesyncd 仅支持简单 NTP 客户端模式(不提供 NTP 服务),不支持认证、高精度校准等高级功能;如需更强控制力(如企业环境),建议改用 chrony

手动触发一次时间同步

通常无需手动操作,但调试或修复时间严重偏移时可用:

sudo timedatectl set-ntp true  # 确保 NTP 已启用
sudo systemctl kill --signal=SIGHUP systemd-timesyncd  # 触发立即同步

也可用以下命令强制刷新(部分版本支持):

sudo systemctl restart systemd-timesyncd

之后用 timedatectl status 查看 System clock synchronized 是否变为 yes,以及 RTC time 是否接近 Universal time

不复杂但容易忽略的是:时区设置与时间同步是两件事。即使 NTP 正常,若 Time zone 错误(如显示 UTC 却身处上海),本地时间仍会差 8 小时。务必用 sudo timedatectl set-timezone Asia/Shanghai 显式设置。

text=ZqhQzanResources