- 硬件时钟:也称为 CMOS 时钟或 BIOS 时钟,是主板上的一个独立时钟,即使在计算机关机后也能运行。
- 系统时钟:是 Linux 内核维护的软件时钟,计算机运行时使用这个时间。
时钟同步的目标通常是:

- 将系统时钟与网络上的标准时间服务器(NTP 服务器)同步,以保证时间的准确性。
- 将同步后的系统时钟写入硬件时钟,以确保下次开机时时间是准确的。
以下是 Linux 时钟同步相关的详细命令和说明,从现代推荐方法到传统方法。
现代推荐方法:timedatectl (适用于 Systemd 系统)
现代的 Linux 发行版(如 Ubuntu 16.04+, CentOS 7+, Debian 8+)都使用 systemd 作为初始化系统,并推荐使用 timedatectl 命令来管理时间和日期,这个命令是 timedatectl 的一部分,功能强大且简单。
查看当前时间和时区状态
timedatectl
输出会显示:
- Local time: 本地时间
- Universal time: UTC 时间
- RTC time: 硬件时钟时间
- Time zone: 当前时区
- System clock synchronized: 系统时钟是否已同步
- NTP service: NTP 服务状态
查看可用的时区
timedatectl list-timezones
设置时区
将时区设置为 "Asia/Shanghai"(上海/北京时间):

sudo timedatectl set-timezone Asia/Shanghai
启用/禁用 NTP 时间同步
timedatectl 可以方便地开启或关闭系统时钟的自动同步。
启用 NTP 同步(推荐):
sudo timedatectl set-ntp yes
执行此命令后,系统会自动使用 systemd 内置的 NTP 客户端从 ntp.org 等公共服务器同步时间。
禁用 NTP 同步:

sudo timedatectl set-ntp no
手动设置时间
如果需要手动设置时间(格式为 YYYY-MM-DD HH:MM:SS),NTP 必须先被禁用。
# 1. 先禁用 NTP sudo timedatectl set-ntp no # 2. 手动设置时间 sudo timedatectl set-time "2025-10-27 10:30:00"
手动设置硬件时钟
将系统时钟的时间强制写入硬件时钟。
sudo timedatectl set-local-rtc 1 --adjust-system-clock
set-local-rtc 1:将硬件时钟设置为本地时间(在某些情况下需要)。--adjust-system-clock:同时调整系统时钟以匹配新的硬件时钟设置。
传统方法:ntpdate 和 hwclock
在旧版系统或没有 systemd 的环境中,通常会使用 ntpdate 和 hwclock 这两个工具。
使用 ntpdate 手动同步时间
ntpdate 是一个简单的 NTP 客户端,用于一次性地同步时间。
安装 ntpdate:
在基于 Debian/Ubuntu 的系统上:
sudo apt-get install ntpdate
在基于 RHEL/CentOS 的系统上:
sudo yum install ntpdate
手动同步时间:
# 从默认的 NTP 服务器同步 sudo ntpdate -q pool.ntp.org # 从指定的 NTP 服务器同步 sudo ntpdate time.windows.com sudo ntpdate time.nist.gov
-q:仅查询,不实际更改时间,用于测试。
直接同步:
sudo ntpdate pool.ntp.org
注意:在现代 systemd 系统中,ntpdate 可能被认为过时,因为它与 systemd 的内置 NTP 服务(chronyd 或 ntpd)可能冲突,建议仅在临时需要时使用。
使用 hwclock 管理硬件时钟
hwclock 命令用于查看和设置硬件时钟。
查看硬件时钟时间:
hwclock --show # 或者简写 hwclock -r
将系统时钟同步到硬件时钟: 这个操作通常在系统正常关机时由系统自动完成,手动执行时,会覆盖硬件时钟的时间。
sudo hwclock --systohc # 或者简写 sudo hwclock -w
将硬件时钟同步到系统时钟: 这个操作通常在系统启动时由系统自动完成,手动执行时,会覆盖系统时钟的时间。
sudo hwclock --hctosys # 或者简写 sudo hwclock -s
守护进程方法:chrony 或 ntpd
对于需要持续、精确时间同步的服务器(如数据库、虚拟化宿主机等),应该运行一个 NTP 守护进程。chrony 是目前更快的替代品,而 ntpd 是经典选择。
chrony (推荐)
chrony 对网络延迟和不稳定性的适应性比 ntpd 更好,启动速度也更快,非常适合虚拟机和云环境。
安装 chrony:
# Debian/Ubuntu sudo apt-get install chrony # CentOS/RHEL sudo yum install chrony
配置文件: /etc/chrony/chrony.conf
启动并启用服务:
sudo systemctl start chronyd sudo systemctl enable chronyd
检查同步状态:
chronyc tracking chronyc sources -v
ntpd
ntpd 是传统的 NTP 守护进程,非常稳定和可靠。
安装 ntpd:
# Debian/Ubuntu sudo apt-get install ntp # CentOS/RHEL sudo yum install ntp
配置文件: /etc/ntp.conf
启动并启用服务:
sudo systemctl start ntpd sudo systemctl enable ntpd
检查同步状态:
ntpq -p
总结与最佳实践
| 场景 | 推荐命令 | 说明 |
|---|---|---|
| 日常使用 / 桌面系统 | sudo timedatectl set-ntp yes |
最简单的方法,让 systemd 自动处理。 |
| 一次性手动同步 | sudo ntpdate pool.ntp.org |
快速修复错误的时间,但不适合长期使用。 |
| 服务器 / 需要高精度时间 | 安装并启用 chrony 或 ntpd 守护进程。 |
最佳实践,提供持续、可靠的时间同步。 |
| 查看时间状态 | timedatectl 或 date |
timedatectl 提供更全面的信息。 |
| 管理硬件时钟 | sudo hwclock --systohc (写入) 或 sudo hwclock --hctosys (读取) |
通常由系统自动调用,手动操作需谨慎。 |
核心工作流程建议:
- 设置正确的时区:
sudo timedatectl set-timezone Asia/Shanghai - 启用自动时间同步:
sudo timedatectl set-ntp yes - 对于服务器:安装并配置
chrony服务,确保其开机自启。
这样就能保证你的 Linux 系统时间始终保持准确。
