Linux Time ..
Linux auto-rsync time and date .

Linux同步時間

在 Linux 系统中,同步时间是一个非常重要的任务,它确保了日志记录的准确性、程序的正常运行(尤其是分布式系统和依赖时间戳的服务),以及文件系统的一致性。Linux 同步时间通常通过 NTP (Network Time Protocol) 来实现,这是用于在网络上同步计算机时钟的协议。


Linux 同步时间的几种方法

根据你的 Linux 发行版和具体需求,有几种常用的方法来同步时间:

1. 使用 systemd-timesyncd (现代 Linux 发行版默认推荐)

檢查狀態:

timedatectl

輸出結果:

              Local time: Wed 2025-06-18 06:10:31 UTC
           Universal time: Wed 2025-06-18 06:10:31 UTC
                 RTC time: Wed 2025-06-18 06:10:31
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
  • 检查状态: System clock synchronized: yesNTP service: active
  • 如果 NTP serviceinactive,你需要启用它。啟動命令: timedatectl set-ntp true ; 關閉命令: timedatectl set-ntp false
  • 配置 NTP 服务器 (可选):systemd-timesyncd 默认会使用 pool.ntp.org 或发行版预设的 NTP 服务器。如果你想指定自己的服务器,可以编辑 /etc/systemd/timesyncd.conf 文件: sudo vim /etc/systemd/timesyncd.conf 找到并取消注释或添加 NTP= 行,然后列出你的 NTP 服务器(用空格分隔):
    [Time] NTP=ntp.aliyun.com ntp.tencent.com
    或者:
    [Time] NTP=time.google.com time.android.com
  • 保存文件后,重启服务: sudo systemctl restart systemd-timesyncd

2. 使用 chrony (推荐,对于服务器和虚拟机更精确)

chrony 是一个更现代、更精确的 NTP 实现,相比传统的 ntpd,它在时钟漂移、间歇性网络连接以及虚拟机环境下的性能更好。许多发行版(如 Red Hat Enterprise Linux / CentOS 8+,以及较新版本的 Ubuntu)已将其作为默认或推荐的 NTP 客户端。

  • 安装 chrony
    • Debian/Ubuntu/OpenWrt: sudo apt update sudo apt install chrony
  • 配置 chrony
    sudo vim /etc/chrony.conf 查找 poolserver 行,
  • 例如: pool 2.pool.ntp.org iburst
    # 或者指定具体服务器
    # server ntp.aliyun.com iburst
    # server time.nist.gov iburst iburst
    选项会在启动时发送一系列快速查询,以加快初始同步。
  • 启动和启用 chrony 服务:
    sudo systemctl start chronyd
    sudo systemctl enable chronyd
    注意:在某些系统上,服务名称可能是 chrony 而不是 chronyd
  • 检查 chrony 状态:
    chronyc tracking chronyc sources -v tracking 命令显示当前的同步状态,
    sources -v 显示连接的 NTP 服务器及其同步详情。
  • 强制立即同步 (如果时钟偏差过大):
    如果你的系统时钟偏差非常大(例如几分钟甚至几小时),chrony 默认会“步进”时钟(立即跳到正确时间)。
    如果偏差不大,它会慢慢调整时钟(“倾斜”)。你可以强制立即步进: sudo chronyc makestep

3. 使用 ntpd (传统 NTP 守护进程)

ntpd 是最传统的 NTP 守护进程,功能非常全面,可以作为客户端也可以作为服务器。在一些较旧的系统或需要搭建 NTP 服务器的场景下仍会用到。

  • 安装 ntpd
    • Debian/Ubuntu/OpenWrt: sudo apt update sudo apt install ntp
  • 配置 ntpd:
    sudo vim /etc/ntp.conf 查找 poolserver 行,并根据需要添加或修改 NTP 服务器。
    # 默认通常有 pool.ntp.org 的配置
    pool 0.pool.ntp.org iburst
    pool 1.pool.ntp.org iburst
    pool 2.pool.ntp.org iburst
    pool 3.pool.ntp.org iburst
    # 你也可以添加具体的服务器
    # server time.nist.gov iburst
    # server time.google.com iburst
    # server time.android.com ibrust
  • 启动和启用 ntpd 服务:
    sudo systemctl start ntp
    sudo systemctl enable ntp
  • 检查 ntpd 状态:
    ntpq -p 此命令会显示 NTP 对等体的状态。
    * 星号表示当前正在同步的服务器。可能需要等待几分钟才能看到星号。

4. 手动同步一次 (不推荐用于长期同步)

ntpdate 命令曾被用于一次性地同步时间,但现在已被弃用,因为它不会考虑时钟漂移,并且可能导致时间跳变过大,对某些应用程序产生负面影响。现代系统建议使用 timedatectlchronyc -q 代替。


重要的时间同步概念

  • 硬件时钟 (RTC/CMOS Clock): 你的计算机主板上的一个独立时钟,即使关机也继续运行。
  • 系统时钟 (System Clock): Linux 内核维护的时钟,这是应用程序使用的主要时钟。
  • UTC (Coordinated Universal Time): 协调世界时,是全球统一的时间标准。
  • 本地时间 (Local Time): 基于时区设置的时间。

最佳实践:

  • 建议始终将硬件时钟设置为 UTC。 Linux 系统会根据时区设置,将 UTC 时间转换为本地时间显示给你。
  • 定期同步: 建议使用 chronysystemd-timesyncd 这类守护进程进行持续同步,它们会平滑地调整时间,避免大的时间跳变。

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *