您的位置:

使用chrony查看同步情况

一、chrony的基本介绍

chrony是一款可选的时间同步软件,它支持使用现代的NTP协议进行时间同步,并且能够处理网络延迟、变化的网络状况和时钟漂移问题。在默认情况下,chrony会自动与可用的时间服务器同步,并且能够提供本机时间与UTC的偏差信息。因此,它经常被用于在Linux系统中维护准确的时间。

二、安装和配置

1、安装chrony

```bash $ sudo apt-get install chrony ```

2、配置chrony。可以在/etc/chrony/chrony.conf文件中配置chrony的选项。可以更改服务器的同步选项、源、限制等。下面是一个示例配置文件:

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/chrony.drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable NTP measurements (ITP: Ignore Tally Packet)
# Also add a delay of 30 seconds to minimize the impact of IP rate limiting.
#minsources 2
#maxdistance 86400
#makestep 0.1 -1

# Allow NTP client access from local network.
allow 192.168.0.0/16
allow 10.0.0.0/8

# Serve time even if not synchronized to a time source.
local stratum 10

# Specify file containing keys for NTP authentication.
keyfile /etc/chrony/chrony.keys

# Specify directory for log files.
logdir /var/log/chrony

# Selectively log NTP clients logs on trust/untrust basis
#nologall
#log client

在这里,它使用了四个ntp服务器源,并记录时钟漂移。它还允许在前三个同步更新时使用步进模式。它允许内部网络的设备同步,即允许192.168.0.0/16和10.0.0.0/8网络的设备同步。最后,它指定了日志文件的存放位置。

三、chronyc命令

可以通过typing “chronyc”来使用chronyc的交互式shell。下面是一些常用的chronyc命令:

1、tracking

tracking命令用于查看服务器与本地时钟的同步情况。

```bash $ sudo chronyc tracking Reference ID : 1.2.3.4 (server.example.com) Stratum : 3 Ref time (UTC) : Fri Sep 28 23:48:35 2018 System time : 0.000001307 seconds slow of NTP time Last offset : -0.000034705 seconds RMS offset : 0.000022875 seconds Frequency : 15.401 ppm slow Residual freq : +0.000 ppm Skew : 0.276 ppm Root delay : 0.214196 seconds Root dispersion : 0.000236 seconds Update interval : 64.0 seconds Leap status : Normal ```

在这个例子中,Reference ID和Stratum是服务器的信息。Ref time是在参考时刻中参考服务器的UTC时间。System time是本地时钟相对于NTP时钟慢的时间。RMS offset是样本中所有偏移量的平均值,Frequency是本地时钟的频率偏差。

2、sources

sources命令可以查看系统当前使用的源。

```bash $ sudo chronyc sources 210 Number of sources = 4 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^+ 192.168.1.1 2 6 7 27 -180us[-210us] +/- 19ms ^* ntp.sjtu.edu.cn 2 6 7 27 -175us[-201us] +/- 28ms ^- ntp.hit.edu.cn 2 6 7 31 +1424us[+1421us] +/- 18ms ^- ntp.zju.edu.cn 2 6 7 27 -1489us[-1487us] +/- 24ms ```

这个例子中有4个源。ms是首选服务器,还有3个客户端连接在同步上。Stratum是服务器的层级深度,Poll表示同步频率,Reach表示服务器与客户端的联系状态。LastRx是最后一次从服务器接到同步信息的时间,Last sample是最后的样本偏差。

3、sourcestats

sourcestats命令可以查看每个源的同步总次数、丢失总次数和错误总数,以及每个源在使用之前的延迟。

```bash $ sudo chronyc sourcestats 210 Number of sources = 4 Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev ============================================================================== 192.168.1.1 9 6 41ms -14.075 0.010 -262us 152us ntp.sjtu.edu.cn 10 7 40ms -22.637 0.067 -5ms 104us ntp.hit.edu.cn 9 7 58ms +19.838 0.118 +603us 228us ntp.zju.edu.cn 8 6 42ms +6.259 0.107 -50ms 73us ```

这个例子中,NP和NR分别表示服务器发送的包的次数和服务器接收的包的次数。Span表示时间跨度,frequency是服务器产生信号的平均频率,而freq skew表示相对于平均频率的时间偏移量。Offset表示服务器的时钟与真实时钟之间的平均时间差异,而标准差是一组样本值的离散程度的一种度量。

4、rtcdata

rtcdata命令提供本地实时时钟(RTC)的精度数据。

```bash $ sudo chronyc rtcdata Last measurement 936us, day since Jan 01 1968 = 18463 ```

在这个例子中,它显示了自RTC上一次校准以来经过的时间,并给出了最近一次时间精度测试的数据。

5、waitsync

waitsync命令将等待NTP装置时间。如果菜单中没有电子时钟,也可以使用这个命令手动同步。可以使用这个命令手动将计算机与NTP服务器同步到准确的时间。

```bash $ sudo chronyc waitsync 1 ```

四、结论

综上所述,通过chrony提供的命令和配置选项,我们可以很方便地查看系统当前的时间同步情况,并进行必要的维护和手动同步。借助chrony的强大的网络延迟,变化的网络状况、时钟漂移问题处理能力,我们可以确保Linux系统保持准确的时间。