技术科普

Linux 时区配置:timedatectl 与 /etc/localtime

Linux 的系统时间通常以 UTC 保存,显示时再按本地时区转换。时区配置主要涉及 /etc/localtime 和 /usr/share/zoneinfo。

查看与设置

使用 systemd 的系统可用:

  • timedatectl:查看当前时间和时区
  • timedatectl list-timezones:列出可用时区
  • sudo timedatectl set-timezone Asia/Shanghai:设置时区

其本质是把 /etc/localtime 链接到 /usr/share/zoneinfo/Asia/Shanghai。

传统方法

不使用 systemd 的系统可以手动创建符号链接:

sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

也可在 /etc/timezone 中写入时区名称(Debian 系)。

TZ 环境变量

TZ=Asia/Shanghai date 可临时指定时区,只影响当前进程及其子进程。它适合脚本和容器,但不应替代系统配置。

常见问题

  • 容器内缺少 tzdata,导致时区文件不存在
  • 修改后未重启服务,进程仍使用旧时区
  • 硬件时钟(RTC)与系统时钟混淆
  • 时区数据库过旧,缺少最新规则

Linux 时区配置的核心是“系统 UTC + 正确时区文件”,理解这一点就能排查大多数时间问题。