CentOS服务器时间不对,怎么用命令调整和同步?

在CentOS系统中,准确的时间管理对于服务器而言至关重要,它不仅关系到系统日志的准确性、安全审计的可靠性,还直接影响着分布式系统、数据库同步、证书验证等关键服务的正常运行,掌握如何在CentOS中查看、设置和同步时间是每一位系统管理员的必备技能,本文将详细介绍CentOS中时间管理的各个方面,从基础查看到高级自动同步,帮助您全面掌控服务器时间。

CentOS服务器时间不对,怎么用命令调整和同步?

查看当前时间与状态

在进行任何时间调整之前,首先需要了解系统当前的时间状态,包括系统时间、硬件时钟以及时区信息,CentOS提供了多种命令来完成这一任务。

使用 timedatectl 命令(推荐)

timedatectlsystemd 系统和服务管理器的一部分,是现代CentOS(7及以上版本)中管理时间和日期的首选工具,它提供了一个统一且信息丰富的界面。

在终端中执行以下命令:

timedatectl

您将看到类似以下的输出:

      Local time: Tue 2025-10-24 10:30:00 CST
  Universal time: Tue 2025-10-24 02:30:00 UTC
        RTC time: Tue 2025-10-24 02:29:59
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

输出信息解读:

  • Local time: 系统的本地时间。
  • Universal time (UTC): 协调世界时,是全球标准时间。
  • RTC time: 硬件时钟(实时时钟,Real-Time Clock)的时间,这是主板在断电后依靠电池维持的时间。
  • Time zone: 当前设置的时区。
  • NTP enabled: 是否启用了网络时间协议(NTP)服务。
  • NTP synchronized: 时间是否已通过NTP同步。

使用 date 命令

date 是一个经典的命令,用于显示或设置系统时间,不带任何参数执行时,它会简单地显示当前的系统时间。

date

输出示例:

Tue Oct 24 10:30:00 CST 2025

使用 hwclock 命令

此命令专门用于查看和设置硬件时钟。

hwclock --show

输出示例:

Tue 24 Oct 2025 02:29:59 AM CST  -0.123456 seconds

修改时区

服务器的物理位置决定了其应使用的时区,错误的时区设置会导致日志时间显示混乱,修改时区是时间管理中最常见的操作之一。

查看所有可用时区

CentOS服务器时间不对,怎么用命令调整和同步?

您可以列出所有可用的时区,以便找到正确的选项。

timedatectl list-timezones

这将输出一个很长的列表,您可以使用 grep 进行过滤,例如查找中国的时区:

timedatectl list-timezones | grep Shanghai

设置时区

使用 timedatectl 设置时区非常简单,要将时区设置为“Asia/Shanghai”:

sudo timedatectl set-timezone Asia/Shanghai

执行后,再次运行 timedatectldate 命令,您会发现 Local time 已经更新为新的时区时间。

常用时区设置命令 描述
sudo timedatectl set-timezone Asia/Shanghai 设置为中国标准时间
sudo timedatectl set-timezone America/New_York 设置为美国东部时间
sudo timedatectl set-timezone UTC 设置为协调世界时

手动设置时间(不推荐用于生产服务器)

在某些特殊情况下,例如服务器无法连接外网,您可能需要手动设置时间,但请注意,手动设置的时间会存在漂移,且服务器重启后可能会与硬件时钟不同步,因此强烈建议生产环境使用自动时间同步。

使用 timedatectl 设置

这是最直接的手动设置方法,格式为 YYYY-MM-DD HH:MM:SS

sudo timedatectl set-time "2025-10-24 11:00:00"

使用 date 命令设置

date 命令的设置格式相对特殊,为 MMDDhhmmYYYY

sudo date 102411002025
  • 1024: 10月24日
  • 1100: 11点00分
  • 2025: 2025年

重要提示: 手动修改时间后,建议将系统时间同步到硬件时钟,以防重启后时间丢失。

sudo hwclock --systohc

此命令会将当前系统时间写入硬件时钟。

自动时间同步(推荐的最佳实践)

对于绝大多数服务器来说,保持时间准确的最佳方式是使用NTP服务,在CentOS 7及更高版本中,chrony 是默认的NTP客户端,它比传统的 ntpd 更能适应不稳定的网络环境,同步速度更快。

安装 chrony

CentOS服务器时间不对,怎么用命令调整和同步?

如果系统中未安装 chrony,可以使用 yumdnf 进行安装。

# For CentOS 7
sudo yum install -y chrony
# For CentOS 8/9
sudo dnf install -y chrony

启动并启用 chrony 服务

安装完成后,需要启动服务并设置其开机自启。

sudo systemctl start chronyd
sudo systemctl enable chronyd

验证同步状态

服务启动后,chrony 会自动在后台与配置文件(/etc/chrony.conf)中预设的NTP服务器进行时间同步。


  • 再次运行 timedatectl,您应该会看到 NTP enabled: yesNTP synchronized: yes


  • chronycchrony 的命令行工具,可以提供详细的同步信息。

    chronyc sources -v

    输出结果中,^* 开头的行表示当前正在同步的源服务器,^+ 开头的行表示可用且可作为备用同步源的服务器。

通过以上步骤,您的CentOS服务器就已经配置好了自动时间同步,能够长期保持时间的精确性。


相关问答FAQs

问题1:timedatectldate 命令在设置时间时有什么主要区别?

解答: 主要区别在于其功能范围和底层机制。date 是一个传统的、单一功能的工具,主要用于显示或设置系统时钟,且设置时需要记忆特定的数字格式,而 timedatectl 是一个更现代化、功能更全面的管理工具,它隶属于 systemd,它不仅可以设置系统时间,还能统一管理时区、硬件时钟模式以及NTP同步服务(如启动/停止chronyd),使用 timedatectl 可以通过更人性化的字符串格式(如 “YYYY-MM-DD HH:MM:SS”)设置时间,并且它会自动处理与NTP服务的冲突(在手动设置时间时会禁用NTP同步),是当前CentOS系统中更推荐的首选方法。

问题2:我已经启动了 chronyd 服务,但 timedatectl 显示 NTP synchronized: no,该怎么办?

解答: 这是一个常见的故障排查问题。chronyd 已启动但未能同步,可能的原因有以下几个:

  1. 网络连接或防火墙问题: NTP服务使用UDP端口123,请确保服务器的防火墙允许出站的UDP 123端口,如果是在企业内网,可能需要配置代理或防火墙规则允许访问NTP服务器,可以使用 pingtelnet 命令测试到NTP服务器的连通性。
  2. NTP服务器不可用: 检查 /etc/chrony.conf 文件中配置的 poolserver 地址是否有效,有时默认的公共NTP池可能会出现短暂问题,可以尝试更换为其他可靠的NTP服务器地址,如阿里云提供的NTP服务器(ntp.aliyun.com)。
  3. 系统时间偏差过大: 如果系统时间与标准时间相差太大(例如超过数小时),chrony 可能会拒绝同步,认为这是一个异常情况,此时可以先手动将时间大致调整到正确范围,然后重启 chronyd 服务(sudo systemctl restart chronyd),它就会开始正常同步。
  4. 查看服务日志: 使用 journalctl -u chronyd 命令查看 chronyd 服务的日志,其中通常会包含详细的错误信息,例如连接超时、认证失败等,这能为定位问题提供最直接的线索。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-07 10:05
下一篇 2025-10-07 10:07

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信