菜鸟科技网

Linux时钟同步命令有哪些?

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

时钟同步的目标通常是:

Linux时钟同步命令有哪些?-图1
(图片来源网络,侵删)
  • 系统时钟与网络上的标准时间服务器(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"(上海/北京时间):

Linux时钟同步命令有哪些?-图2
(图片来源网络,侵删)
sudo timedatectl set-timezone Asia/Shanghai

启用/禁用 NTP 时间同步

timedatectl 可以方便地开启或关闭系统时钟的自动同步。

启用 NTP 同步(推荐):

sudo timedatectl set-ntp yes

执行此命令后,系统会自动使用 systemd 内置的 NTP 客户端从 ntp.org 等公共服务器同步时间。

禁用 NTP 同步:

Linux时钟同步命令有哪些?-图3
(图片来源网络,侵删)
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:同时调整系统时钟以匹配新的硬件时钟设置。

传统方法:ntpdatehwclock

在旧版系统或没有 systemd 的环境中,通常会使用 ntpdatehwclock 这两个工具。

使用 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 服务(chronydntpd)可能冲突,建议仅在临时需要时使用。

使用 hwclock 管理硬件时钟

hwclock 命令用于查看和设置硬件时钟。

查看硬件时钟时间:

hwclock --show
# 或者简写
hwclock -r

将系统时钟同步到硬件时钟: 这个操作通常在系统正常关机时由系统自动完成,手动执行时,会覆盖硬件时钟的时间。

sudo hwclock --systohc
# 或者简写
sudo hwclock -w

将硬件时钟同步到系统时钟: 这个操作通常在系统启动时由系统自动完成,手动执行时,会覆盖系统时钟的时间。

sudo hwclock --hctosys
# 或者简写
sudo hwclock -s

守护进程方法:chronyntpd

对于需要持续、精确时间同步的服务器(如数据库、虚拟化宿主机等),应该运行一个 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 快速修复错误的时间,但不适合长期使用。
服务器 / 需要高精度时间 安装并启用 chronyntpd 守护进程。 最佳实践,提供持续、可靠的时间同步。
查看时间状态 timedatectldate timedatectl 提供更全面的信息。
管理硬件时钟 sudo hwclock --systohc (写入) 或 sudo hwclock --hctosys (读取) 通常由系统自动调用,手动操作需谨慎。

核心工作流程建议:

  1. 设置正确的时区sudo timedatectl set-timezone Asia/Shanghai
  2. 启用自动时间同步sudo timedatectl set-ntp yes
  3. 对于服务器:安装并配置 chrony 服务,确保其开机自启。

这样就能保证你的 Linux 系统时间始终保持准确。

分享:
扫描分享到社交APP
上一篇
下一篇