首页 > Sysadmin > 正文

Linux 修改时区与时间同步

huyuanwen 2026-10-30 Sysadmin

> 状态:草稿待审。timedatectl 查询与时区列表已在 Ubuntu 24.04 WSL 实测;本文未覆盖真实重启、物理 RTC 和所有发行版的默认 NTP 服务。

Linux 上“时间不对”通常要分成两件事:时区决定本地时间如何显示,NTP 服务负责让系统时钟与网络时间同步。推荐先查看状态,再修改时区,最后确认同步状态;不要直接手工改 /etc/localtime。

先查看当前状态

timedatectl status 它会显示本地时间、UTC 时间、时区、系统时钟是否已同步以及 NTP 服务状态。只想看时区可用:

timedatectl show -p Timezone --value

修改时区

先查可用名称,再设置。例如中国大陆使用 Asia/Shanghai:

timedatectl list-timezones | grep -E '^(Asia/Shanghai|Etc/UTC)$'
sudo timedatectl set-timezone Asia/Shanghai

set-timezone 会更新 /etc/localtime 的链接。[1] 的时区参数应使用 IANA 名称,不要写成“北京时间”或 UTC+8。

修改后复查:

timedatectl status
date '+%F %T %Z %z'

开启并检查网络同步

在由 systemd 提供时间同步服务的系统上,可以先查看并启用 NTP:

sudo timedatectl set-ntp true
timedatectl show -p NTPSynchronized -p NTP --value

输出中的 yes 表示对应功能已启用或时钟已经同步;刚开启服务后可能需要等待网络和校时完成。[2]也建议用 timedatectl status 查看同步概况;使用 chrony 的系统则可进一步执行:

chronyc -N tracking

如果系统没有 chronyc,不要为了排错盲目安装。先确认发行版的时间同步方案:

systemctl list-unit-files | grep -E 'systemd-timesyncd|chrony|ntp'

常见问题与撤销

| 现象 | 可能原因 | 处理 | |—|—|—| | Timezone 已正确但应用仍显示旧时间 | 应用进程缓存了时区或使用固定配置 | 重启应用并检查其运行环境变量 | | set-timezone 报权限错误 | 普通用户没有修改系统时区权限 | 使用具备管理员权限的账号执行 | | NTPSynchronized: no | 网络不可用、服务未启动或刚刚启用 | 查 timedatectl status 和对应服务日志 | | 容器内时间不一致 | 容器通常共享宿主机时钟,时区由镜像或环境决定 | 先检查宿主机,再检查容器的 /etc/localtime |

撤销时区修改就是重新设置原来的 IANA 名称,例如:

sudo timedatectl set-timezone Etc/UTC

不要用 set-time 代替 NTP 校时;手工设置系统时间可能影响证书、日志和定时任务。需要精确检查时同步服务时,应依据当前发行版文档使用 chronyc 或 systemctl。

实测记录与局限

本次在 Ubuntu 24.04 WSL 以 root 查询 timedatectl status、筛选 Asia/Shanghai 与 Etc/UTC,并读取 Timezone、NTPSynchronized、NTP 属性,观察到当前时区为 Asia/Shanghai、同步状态为 yes、NTP 为 yes。未执行会改变用户系统时区的写操作,也未验证真实硬件 RTC、重启后的持久性或 Fedora/Arch 的默认服务。


参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测,个别条目(未装工具/安装类命令)仅核对官方文档,未实际执行。