售前咨询400-838-0503

Linux 服务器时间不准确怎么办?

发布:2026-10-12 13:41

搜索全部帮助分类的文档

Linux 云服务器运行网站、数据库、定时任务或者其他业务时,有时会发现系统时间与实际时间不一致。

例如:

服务器显示 UTC 时间,与北京时间相差 8 小时;

服务器时间比实际时间快了几分钟;

重启服务器后时间再次发生偏差;

网站日志时间不正确;

SSL 证书提示尚未生效或已经过期;

定时任务没有按照预期时间执行。

这些情况可能由不同原因造成。

比较常见的包括:

  • Linux 系统时区配置错误

  • NTP 时间同步没有启用

  • 时间同步服务运行异常

  • 服务器无法连接时间同步服务器

  • 虚拟机系统时钟出现偏差

  • 多个时间同步服务发生冲突

  • 应用程序使用了独立时区

因此,排查时首先需要区分:时区显示错误,还是系统时钟本身不准确。

一、先检查 Linux 服务器当前时间

Linux检查服务器时间和时区

通过 SSH 登录服务器,执行:

date

可以查看当前系统本地时间。

例如:

Mon Oct 12 13:00:00 CST 2026

然后查看 UTC 时间:

date -u

例如:

Mon Oct 12 05:00:00 UTC 2026

北京时间采用 UTC+8,因此两者相差 8 小时属于正常现象。

如果本地时间与 UTC 时间相差 8 小时,并不代表服务器时间错误。

需要进一步确认服务器实际使用的时区。

二、使用 timedatectl 查看时间同步状态

执行:

timedatectl

可能看到:

Local time: Mon 2026-10-12 13:00:00 CST
Universal time: Mon 2026-10-12 05:00:00 UTC
RTC time: Mon 2026-10-12 05:00:00
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active

重点关注以下几个字段。

Local time

系统当前本地时间。

Universal time

当前 UTC 时间。

RTC time

硬件时钟或虚拟机提供的 RTC 时间。

Time zone

当前系统时区。

System clock synchronized

表示系统是否报告时钟已同步。

NTP service

表示系统是否检测到启用的网络时间同步服务。

如果显示:

System clock synchronized: no

需要继续检查时间同步服务。

但刚启动服务器时短暂显示 no,并不一定代表发生故障,可以等待后再次确认。

三、Linux 时间与北京时间相差 8 小时怎么办?

Linux设置Asia/Shanghai北京时间时区

如果执行:

date

发现服务器显示 UTC 时间,而你希望它使用北京时间,可以修改系统时区。

首先查看当前时区:

timedatectl show -p Timezone

例如:

Timezone=Etc/UTC

将时区修改为:

Asia/Shanghai

执行:

sudo timedatectl set-timezone Asia/Shanghai

然后再次检查:

timedatectl

正常情况下会显示:

Time zone: Asia/Shanghai (CST, +0800)

再执行:

date

即可查看北京时间。

需要注意:修改时区只会改变时间的本地显示方式,不会自动校准错误的系统时钟。

四、为什么推荐使用 Asia/Shanghai?

Linux 通常使用 IANA 时区数据库。

北京时间对应:

Asia/Shanghai

即使服务器部署在广州、北京、上海或其他中国大陆城市,也可以统一使用这个时区。

不建议为了北京时间而手动设置固定的时间偏移,优先使用标准时区名称。

如果服务器部署在海外,但业务主要面向中国大陆用户,同样可以根据业务需求使用 Asia/Shanghai。

不过跨国业务也可以统一使用 UTC,在应用展示层转换成用户所在地时间。

五、修改时区以后需要重启服务器吗?

通常不需要。

执行:

sudo timedatectl set-timezone Asia/Shanghai

以后,新的系统时区配置一般会立即生效。

可以直接执行:

date

确认。

但需要注意,部分已经运行的程序可能缓存了时区信息。

例如:

Java;

PHP-FPM;

某些数据库;

长期运行的后台服务。

这些应用可能需要重新加载配置或重启对应服务,才能使用新的时区设置。

不建议仅仅为了修改时区就直接重启整台生产服务器。

六、系统时间本身不准确怎么办?

如果服务器时间与实际时间相差几分钟甚至几小时,并且不是时区造成的,就需要检查系统时钟同步。

执行:

timedatectl

查看:

System clock synchronized

和:

NTP service

如果系统支持,可以执行:

sudo timedatectl set-ntp true

启用网络时间同步。

然后检查:

timedatectl

需要注意,timedatectl set-ntp true 依赖系统安装并配置了受支持的时间同步服务。

如果服务器没有安装对应服务,命令可能无法完成启用。

七、Ubuntu 和 Debian 如何检查时间同步?

Ubuntu、Debian 服务器可能使用:

systemd-timesyncd

也可能使用:

chrony

具体取决于系统版本、镜像和管理员配置。

首先检查:

systemctl status systemd-timesyncd --no-pager

如果服务存在且正在运行,可能看到:

Active: active (running)

继续查看:

timedatectl timesync-status

部分系统也可以执行:

timedatectl show-timesync --all

查看当前同步服务器和状态。

如果提示服务不存在,不代表 Linux 无法同步时间。

应该继续检查系统是否使用 chrony 等其他时间同步服务。

八、systemd-timesyncd 没有运行怎么办?

如果系统确定使用 systemd-timesyncd,可以先检查服务状态:

systemctl status systemd-timesyncd

如果服务已安装但没有启动,可以根据实际情况执行:

sudo systemctl enable --now systemd-timesyncd

然后:

sudo timedatectl set-ntp true

再次查看:

timedatectl

如果服务器已经使用 chrony,不建议同时启用多个时间同步服务来调整同一个系统时钟。

应选择一个适合当前系统的时间同步方案。

九、Rocky Linux 如何检查时间同步?

Rocky Linux、AlmaLinux 等 RHEL 系发行版通常使用 chrony。

首先执行:

systemctl status chronyd --no-pager

如果正在运行,通常可以看到:

Active: active (running)

然后执行:

chronyc tracking

查看时间同步跟踪状态。

还可以执行:

chronyc sources -v

查看可用的时间同步来源。

如果系统尚未安装 chrony,可以根据实际发行版使用:

sudo dnf install chrony -y

安装完成后:

sudo systemctl enable --now chronyd

再检查同步状态。

十、chronyc tracking 怎么看?

Linux检查NTP时间同步状态

执行:

chronyc tracking

可能看到:

Reference ID    : ...
Stratum         : 3
System time     : ...
Last offset     : ...
RMS offset      : ...
Leap status     : Normal

其中:

Reference ID

当前参考时间源。

Stratum

时间源层级。

System time

系统时钟相对于估计参考时间的偏差。

Last offset

最近一次测量的时间偏差。

Leap status

时间同步状态。

如果显示:

Leap status : Normal

通常说明同步状态正常。

如果长期显示:

Not synchronised

则需要继续检查时间源、网络和 chrony 服务。

十一、查看 NTP 时间服务器

如果系统使用 chrony,可以执行:

chronyc sources -v

其中常见标记包括:

^*:当前选用的时间源。

^+:可参与时间同步的其他来源。

^?:当前无法确定可用性或没有足够测量数据的来源。

如果所有时间源长期都无法使用,就需要检查:

服务器网络;

DNS;

NTP 配置;

防火墙;

云平台提供的时间同步服务。

十二、服务器无法连接 NTP 怎么办?

NTP 通常使用 UDP 123 端口。

如果服务器无法与时间源通信,就可能无法完成时间同步。

可以先检查 DNS:

getent hosts pool.ntp.org

再检查服务器基础网络:

ip route

如果使用 chrony:

chronyc sources -v

如果使用 systemd-timesyncd:

timedatectl timesync-status

需要注意,ping 成功并不代表 UDP 123 一定可以正常通信。

部分云平台可能提供内部时间服务器,建议优先使用平台推荐的 NTP 地址。

十三、如何修改 chrony 时间服务器?

chrony 配置文件常见位置包括:

/etc/chrony.conf

或者:

/etc/chrony/chrony.conf

可以先查看实际配置:

grep -E '^(server|pool)' /etc/chrony.conf /etc/chrony/chrony.conf 2>/dev/null

如果需要修改时间服务器,可以编辑实际存在的配置文件。

例如:

pool pool.ntp.org iburst

修改完成后检查服务:

sudo systemctl restart chronyd

然后:

chronyc sources -v

正式服务器建议使用稳定、可访问的时间源,避免随意配置不可信的时间服务器。

十四、系统时间偏差很大怎么处理?

如果服务器系统时钟偏差较大,chrony 可能需要一定时间才能完成调整。

可以先检查:

chronyc tracking

如果已经确认时间源可信,并且需要立即校正时间,可以在合适的维护窗口使用:

sudo chronyc makestep

这个操作可能使系统时间发生跳变。

对于正在运行的数据库、订单系统、认证服务、日志系统和定时任务,时间突然跳变可能带来影响。

因此不要在重要生产业务高峰期随意执行。

十五、为什么不建议直接使用 date -s 修改时间?

Linux 可以通过:

date -s

手动修改系统时间。

但对于普通云服务器,不建议把手动设置时间作为长期解决方案。

原因包括:

人工设置容易产生误差;

无法自动纠正时钟漂移;

重启后可能再次出现偏差;

可能与 NTP 服务发生冲突。

更合理的方式是让服务器通过可信的时间源持续同步。

十六、重启服务器以后时间又错了怎么办?

如果服务器每次重启后时间都会明显偏差,可以检查:

RTC 时间;

虚拟机时钟;

NTP 是否开机启动;

时间同步服务日志;

宿主机时间同步情况。

执行:

timedatectl

查看 RTC 和系统时间。

再检查:

systemctl is-enabled chronyd

或者:

systemctl is-enabled systemd-timesyncd

具体使用哪个命令取决于系统安装的服务。

如果系统每次启动都出现明显偏差,并且 NTP 配置正常,可以向云服务商提供系统日志和时间同步状态,进一步检查虚拟化时间源。

十七、服务器时间不准确会影响 SSL 吗?

会。

SSL/TLS 证书具有有效期。

如果服务器系统时间严重超前或落后,可能导致证书有效期验证异常。

例如:

证书尚未生效;

证书被判断为过期;

HTTPS 客户端验证失败。

这种情况下,应先检查系统时钟,而不是立即重新申请证书。

可以执行:

date -u

确认 UTC 时间是否正确。

十八、时间错误会影响数据库吗?

会。

如果服务器时间不正确,可能影响:

数据库日志;

数据创建时间;

订单时间;

定时备份;

任务执行记录;

跨服务器数据同步。

但需要区分系统时区和数据库会话时区。

例如 MySQL 可以执行:

SELECT NOW(), UTC_TIMESTAMP();

再检查:

SHOW VARIABLES LIKE '%time_zone%';

如果 Linux 时间正确,但 MySQL 显示的时间不符合业务预期,应继续检查数据库自身的时区配置。

不要只反复修改 Linux 时区。

十九、为什么 Linux 时间正确但 PHP 时间不对?

PHP 可以拥有独立的时区配置。

可以执行:

php -i | grep "date.timezone"

如果 PHP CLI 和网站使用的 PHP-FPM 不同,还需要检查网站实际运行的 PHP 配置。

例如 PHP 配置中可能存在:

date.timezone = UTC

如果业务要求北京时间,可以根据实际情况配置:

date.timezone = Asia/Shanghai

修改后需要重新加载对应 PHP 服务。

二十、Linux 时间正确但 Docker 容器时间不对

普通 Docker 容器通常与宿主机共享系统时钟,但容器可以使用不同的时区配置。

例如:

宿主机显示北京时间;

Docker 容器显示 UTC;

两者实际表示同一个时间点。

这种情况下不需要修改宿主机时间。

应该检查 Docker 容器的:

TZ

/etc/localtime

以及应用自身的时区设置。

如果只是容器显示相差 8 小时,不能直接认定宿主机时间同步异常。

二十一、时间不准确会影响定时任务吗?

会。

例如服务器使用 UTC,但管理员按照北京时间编写 Cron:

0 3 * * * /path/to/backup.sh

如果 Cron 使用服务器本地时区,任务执行时间可能与预期相差 8 小时。

另外,如果系统时钟本身不准确,也可能造成:

备份时间错误;

任务提前执行;

任务延迟;

日志顺序异常。

建议先确认:

服务器时区;

系统时钟;

Cron 使用的时区;

应用自身时区。

对于重要任务,还应检查执行日志,而不是只看配置时间。

二十二、如何检查系统是否有多个时间同步服务?

可以执行:

systemctl status chronyd --no-pager

以及:

systemctl status systemd-timesyncd --no-pager

还可以查看其他时间服务:

systemctl list-unit-files | grep -E 'chrony|timesync|ntp'

如果系统同时存在多个时间同步程序,需要确认实际使用哪个服务。

不要为了排查问题而把所有时间同步服务全部启动。

也不要在不了解云平台时间同步机制的情况下,随意关闭正在正常运行的服务。

二十三、Linux 时间问题快速排查表

问题现象 优先检查
时间相差 8 小时 timedatectl、时区
时间比实际快几分钟 NTP 同步状态
System clock synchronized 为 no 时间同步服务
chrony 长期不同步 时间源、网络、UDP 123
重启后时间错误 RTC、虚拟机时钟、NTP
SSL 证书验证异常 UTC 时间是否准确
PHP 时间不正确 date.timezone
MySQL 时间不正确 数据库时区
Docker 时间相差 8 小时 容器时区
Cron 执行时间不符合预期 系统与任务时区

推荐按照:

date → timedatectl → 时区 → NTP 服务 → 时间源 → 网络 → 应用时区

的顺序排查。

二十四、仍然无法解决怎么办?

如果服务器时间持续偏差,并且 NTP 无法正常同步,可以通过莱卡云客户中心提交工单。

建议提供:

服务器 IP;

操作系统版本;

问题发生时间;

当前系统时区;

是否刚刚重启或迁移服务器;

时间同步服务状态。

可以提供:

timedatectl

如果使用 chrony:

chronyc tracking
chronyc sources -v

如果使用 systemd-timesyncd:

timedatectl timesync-status

相关输出。

请不要在公开截图中提供服务器密码、Token 或其他敏感信息。

总结

Linux 云服务器时间不准确时,首先需要区分:

时区显示不同,还是系统时钟本身错误。

查看时间:

date
date -u

查看系统时区和同步状态:

timedatectl

如果只是时区错误,可以执行:

sudo timedatectl set-timezone Asia/Shanghai

如果系统时钟本身不准确,应检查 NTP 时间同步服务。

Ubuntu、Debian 可以根据实际系统检查:

systemctl status systemd-timesyncd

Rocky Linux、AlmaLinux 等系统可以检查:

systemctl status chronyd

再使用:

chronyc tracking

查看同步状态。

对于正式业务服务器,建议保持可信时间源的持续同步,避免长期依赖手动设置系统时间。

同时注意:Linux 系统时间正确,不代表 PHP、MySQL、Docker 等应用一定使用相同的本地时区。

按文档操作后还是不行,把机器编号、出问题的时间点和现象截图一起提工单,能少来回一轮。

提交工单