timedatectl set-timezone Asia/Shanghai 是唯一推荐的时区设置方式,必须用完整时区名,执行后立即生效并自动更新 /etc/localtime 和 /var/lib/timezone/zone。

timedatectl set-timezone Asia/Shanghai 是唯一推荐的时区设置方式
CentOS 7 不再支持直接修改 /etc/localtime 软链接或编辑 /etc/sysconfig/clock 这类旧方法,那些操作可能被 timedatectl 后续覆盖,导致时区显示异常或 NTP 同步失效。
正确做法只有一条命令:
timedatectl set-timezone Asia/Shanghai
- 必须用完整时区名,
Asia/Shanghai不能简写为Shanghai或CST,否则报错Failed to set time zone: Invalid time zone 'CST' - 执行后立即生效,无需重启服务或 reload 任何 daemon
- 该命令会自动更新
/etc/localtime指向正确的 tzdata 文件,并写入/var/lib/timezone/zone作为持久记录
chronyd 默认不自动同步——需显式启用 NTP
即使装了 chronyd 并启动了服务,NTP synchronized: no 仍很常见。这是因为 timedatectl 的 NTP 开关默认是关闭的,和 systemctl start chronyd 无关。
必须手动开启系统级 NTP 同步:
timedatectl set-ntp true
- 这一步会触发
chronyd加载配置并开始轮询服务器,不是单纯“启动服务” - 若之前用过
ntpd,先停掉它:systemctl stop ntpd && systemctl disable ntpd,避免端口冲突(都占 123/UDP) - 验证是否真正启用:
timedatectl | grep "NTP enabled\|NTP synchronized",两行都应为yes
阿里云 NTP 服务器要写进 /etc/chrony.conf 才能生效
chronyd 不读取 /etc/ntp.conf,也不认环境变量或命令行参数。所有服务器地址必须硬编码在 /etc/chrony.conf 里,否则 fallback 到默认池(可能慢或不可靠)。
编辑配置文件,替换或追加以下行:
server ntp.aliyun.com iburst
-
iburst必须带上,否则首次同步延迟高(尤其时间偏差 > 1000 秒时) - 不要注释掉原有
pool行,除非你明确知道后果;建议保留 1–2 个国内可靠源,比如再加一行server ntp1.aliyun.com iburst - 改完记得重载:
systemctl reload chronyd,不是 restart - 检查是否加载成功:
chronyc sources -v,看到^*标记的行才表示已选为主源
硬件时钟(RTC)别乱设成 localtz
有些教程教用 timedatectl set-local-rtc 1 把硬件时钟也设成北京时间,这是危险操作。
- Linux 内核默认把 RTC 当 UTC 时间处理;设成 localtz 后,双系统(如 Windows + CentOS)会互相篡改对方时间
-
timedatectl status中若出现RTC in local TZ: yes,说明已误配,应立刻恢复:timedatectl set-local-rtc 0 - 硬件时钟同步由
chronyd自动完成(通过makestep或hwclock --systohc),无需手动干预
最关键的遗漏点:很多人设完时区、开了 NTP、换了服务器,却忘了 timedatectl set-ntp true 这一步——它才是连接配置与实际同步的开关,没它,chronyd 就只是个安静的后台进程。


















