宝塔面板默认不启用chronyd等系统级时间同步服务,需手动启用并配置;面板右上角时间存在缓存,应以date -R为准;禁用ntpdate,改用chronyd平滑校准;虚拟机需关闭宿主时间同步。

宝塔面板里 systemctl status chronyd 显示 inactive
宝塔默认不启用系统级时间同步服务,哪怕你手动点过“时间校准”,也只是临时执行一次 ntpdate,不会持久生效。真正要自动校准,得靠 chronyd(CentOS/RHEL 7+)或 systemd-timesyncd(Ubuntu/Debian),但宝塔界面根本不暴露这个开关。
实操建议:
- 先确认系统用的是哪个服务:
timedatectl status看 “NTP service” 那行,是active还是inactive,以及服务名是chronyd还是systemd-timesyncd - 如果是
chronyd且 inactive:运行systemctl enable --now chronyd,再chronyc tracking看是否已同步 - Ubuntu 20.04+ 默认用
systemd-timesyncd,但宝塔可能干扰其配置——检查/etc/systemd/timesyncd.conf是否被改成Enabled=false,改成true后运行systemctl restart systemd-timesyncd
宝塔后台“系统监控”时间仍不准,但 date 命令已正确
这是典型的时间显示缓存问题:宝塔前端页面读取的是它自己缓存的系统时间(约每5分钟更新一次),不是实时调用 date。即使后端时间已同步,前端也可能卡在旧值上。
实操建议:
- 强制刷新宝塔时间缓存:在 SSH 中运行
bt reload(不是重启面板,是重载配置) - 更彻底的办法:清空宝塔时间缓存文件 —— 删除
/www/server/panel/data/time.pl,然后bt reload - 别依赖面板右上角时间做判断,以
date -R输出为准;面板时间只作参考,尤其在排查定时任务、SSL证书过期时不可信
chronyc sources -v 显示所有源都是 ^? 或延迟极高
说明 chronyd 没连上 NTP 服务器,常见于防火墙拦截 UDP 123 端口、DNS 解析失败,或配置了不可达的国内 NTP 源(比如某些教育网源在公网不可用)。
实操建议:
- 检查防火墙:
firewall-cmd --list-ports | grep 123(CentOS)或ufw status | grep 123(Ubuntu),没放行就加规则 - 换可靠源:编辑
/etc/chrony.conf,注释掉原有server行,替换成:server ntp.aliyun.com iburstserver time1.cloud.tencent.com iburst -
iburst参数必须加,否则首次同步极慢;改完重启服务:systemctl restart chronyd
宝塔计划任务里用 crontab -e 写的定时校准失效
用 ntpdate 写进 crontab 是错的——现代 Linux 禁止非 root 用户直接写系统时间,且 ntpdate 已被标记为废弃,和 chronyd 冲突,强行运行可能让时间跳变甚至服务异常。
实操建议:
- 删掉所有含
ntpdate的 crontab 条目,chronyd本身就在后台持续平滑校准,不需要手动干预 - 如果真要兜底(比如虚拟机休眠后时间严重偏移),用
chronyc makestep替代,它会安全地一步修正大偏差(需在/etc/chrony.conf加makestep 1 -1) - 宝塔计划任务里若执行时间相关脚本,务必用
date -u +%s获取 UTC 时间戳,避免本地时区转换错误
事情说清了就结束。最常被忽略的其实是虚拟机场景:KVM/Xen 虚拟机必须关掉 host 时间同步(如 VMware Tools 的时间同步选项),否则 chronyd 和宿主反复抢时间,越校越乱。










