技术科普
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 + 正确时区文件”,理解这一点就能排查大多数时间问题。