在 Linux 系统中,时间同步是一个确保系统时钟准确的重要过程。系统时钟准确性对于日志记录、计划任务以及分布式系统之间的协调非常重要。
时间同步,可以使用手动,命令格式 sudo date MMDDhhmm[[CC]YY][.ss];也可以使用网络同步方式,时间同步协议(NTP)。网络方式用的比较多的时间同步协议服务有 ntpd、systemd-timesyncd
、chrony。
ntpd
是Network Time Protocol Daemon的缩写,它是用于在计算机系统间同步时间的守护进程(daemon)。它是NTP软件包的核心组件,用于同步计算机的系统时钟与互联网上或局域网中的一个或多个参考时间源。具有
- 容错性:
ntpd
可以配置多个时间服务器,提高可靠性和准确性。 - 安全性: 支持认证机制,防止误导时间信息的攻击。
- 灵活性: 可以配置为仅从特定时间服务器获取时间,或者在对等网络中工作。
安装
sudo apt-get install ntp
配置
ntpd
通常通过配置文件/etc/ntp.conf
来管理,该文件中指定了服务器、频率调整、认证等方面的设置。启动ntpd
服务后,它会在后台运行,周期性地进行时间同步。系统管理员可以使用ntpq
和其他命令行工具来监测ntpd
的性能和状态。
通过systemctl 命令来操作。比如 systemctl start / stop ntp 等。
systemd-timesyncd
systemd-timesyncd
是一个更轻量的 NTP 实现,是 目前 ubuntu 系统默认的时间同步服务。
启动/重启 systemd-timesyncd
sudo timedatectl set-ntp true
检查同步状态:
使用
timedatectl status
来检查时间同步状态。
chronyd
是chrony
套件的主守护程序,它用于实现Network Time Protocol(NTP)以保持系统时钟同步。相较于传统的ntpd
(NTP daemon),chronyd
被设计来更好地处理有变网络条件下的时间同步,其中包括网络带宽较低、连接频繁断开、系统重启等情况。它十分适用于现代应用需求,尤其是在虚拟机、云环境、以及系统经常移动的移动设备上表现出色。
主要特点:
- 快速同步:在启动时或网络条件发生变化时,
chronyd
能够迅速将系统时钟同步到正确的时间。 - 时间精度:通过细致的频率调整,
chronyd
能非常精确地维持系统时钟的准确性。 - 低资源占用:
chronyd
设计时就考虑到了对系统资源的低占用率,使得它非常适合资源受限的环境。 - 处理离线时间:即使在长时间离线情况下,
chronyd
也能通过测量系统时钟的运行速度(漂移)来调整,以保持尽可能的准确性。 - 安全性:支持多种认证方法,以确保时间同步的数据不受到篡改。
安装方法:
apt-get install chrony
配置方法:
chronyd
的配置文件通常位于/etc/chrony/chrony.conf
。在这个文件中,你可以定义要同步的NTP服务器、访问控制规则、以及其他参数。例如,添加一个NTP服务器
server ntp.example.com iburst
通过iburst
选项,你可以让chronyd
在首次尝试同步时更快地接收到响应,这对于加快初始同步过程非常有用。
有用的工具
ntpdate
timedatectl
chronyc
chrony – chronyc(1)
比如, 查看与时间服务器的时间差diff
ntpdate -q 192.168.1.102 , 可以查看与时间服务器 192.168.1.102的 offset。
chronyc
sourcestats
chronyc tracking
参考
https://linux.die.net/man/8/ntpd
https://linux.die.net/man/8/chronyd
Welcome to the home of the Network Time Protocol (NTP) Project.
https://blog.csdn.net/GerZhouGengCheng/article/details/126032230