Linux 使用 Chrony 同步 GPS 时间

PPS

执行 ppsfind --help 命令查找 PPS 设备

$ ppsfind --help
pps0: name=ktimer path=
pps1: name=pps-gpio.-1 path=/dev/ttyUSB0

执行 dmesg | grep pps1

[40849.411612] pps pps1: PPS event at 1673578229.099377717
[40849.411638] pps pps1: capture assert seq #2979

测试 PPS 功能

sudo ppswatch /dev/pps0
trying PPS source "/dev/pps0"
found PPS source "/dev/pps0"
timestamp: 1577777203, sequence: 83886, offset:   1984
timestamp: 1577777204, sequence: 83887, offset: -31306
timestamp: 1577777205, sequence: 83888, offset:   5836
timestamp: 1577777206, sequence: 83889, offset:   3027
timestamp: 1577777207, sequence: 83890, offset: -24220
timestamp: 1577777208, sequence: 83891, offset:   2041

GPSD

gpsd -b -n -N -D3 /dev/ttyUSB0 /dev/pps0
gpsd -D 5 -N -n /dev/ttyUSB0 /dev/pps0

Chrony

启动 Chronyd 服务

chronyd -f /etc/chrony.conf

chrony.conf 配置文件内容如下,包含 NTP Server、PPS、GPS 解析数据

/etc/chrony.conf

# Use public NTP servers from the pool.ntp.org project
pool 0.ubuntu.pool.ntp.org iburst maxsources 3
# pool 0.openembedded.pool.ntp.org iburst maxsources 3

# Sync the start of the second based on the 1PPS signal
refclock PPS /dev/pps1 refid KPPS trust lock GNSS maxdispersion 3 poll 2

# Provide GNSS time samples using the SOCK interface
refclock SOCK /var/run/chrony.sock refid GNSS maxdispersion 0.2 noselect

refclock SHM 0 refid GPS precision 1e-1 offset 0.9999 delay 0.2

# Step the system clock instead of slew if the adjustment is larger than 0.1 second.
makestep 0.1 -1

# Serve time even if not synchronized to any NTP server.
local stratum 10

# Allow NTP client access from local network.
allow all
#若系统时间与基准时间相差大于0.1s,直接跳变系统时间,仅限前3个时钟周期
makestep 0.1 3
#允许系统时间同步rtc时间,Linux每11min同步一次
rtcsync
#允许设备作为时间同步服务器
allow
#瑞秒相关设置
leapsectz right/UTC
#指定var/lib/chrony/drift存储时间补偿增减率,每次开机增减率有效前使用存储值
driftfile /var/lib/chrony/drift
#指定测量历史记录存储目录,测量历史用于计算补偿增减率。启动读取后删除
dumpdir /var/run/chrony

#指定硬件PPS为优先时间源
refclock PPS /dev/pps0 refid PPS lock GPSD prefer precision 1e-7 poll 2
#指定硬件GPS为时间源
refclock SHM 0 refid GPSD precision 1e-1 offset 0.9999 delay 0.2 poll 2

chrony 将根据各时间系统准确度选择最准确的时间。

查看 chronyc 查看时间同步状态

chronyc tracking
chronyc sources
chronyc sources -v
chronyc -m 'sources -v' tracking 'sourcestats -v'

可以看到已经将系统时间同步到 GNSS 时间

date
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Linux中的chrony时间同步命令是"chronyc"。它可以用来管理和监控chrony时间同步服务,包括手动同步时间、查看同步状态、修改配置等操作。常用的chronyc命令包括:chronyc sources、chronyc tracking、chronyc makestep等。 ### 回答2: Chrony是一款用于Linux操作系统的时间同步软件。它使用以太网,无线电(wifi),PPPoE和IPv6等多种协议来同步系统和本地时钟,从而保证系统的时间准确性。下面我们将详细介绍使用Chrony进行时间同步的操作步骤。 首先,需要安装Chrony软件。不同发行版的Linux安装命令略有不同,这里以Debian/Ubuntu为例: ``` sudo apt-get install chrony ``` 安装完成后,打开Chrony配置文件/etc/chrony/chrony.conf。如果要同步到局域网内的时间服务器,可以将以下内容添加到配置文件中: ``` server time.server.com iburst ``` 其中"time.server.com"为你要同步时间服务器的地址,"iburst"是用于快速同步的标志。 如果Chrony作为系统的唯一时间同步软件,在配置文件中将以下内容打开: ``` # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). #pool 2.debian.pool.ntp.org offline iburst ``` 在启动Chrony前,需要先关闭系统自带的时间同步服务。不同发行版的关闭命令略有不同,这里以Debian/Ubuntu为例: ``` sudo timedatectl set-ntp off ``` 最后,重新启动Chrony服务: ``` sudo systemctl restart chrony ``` 稍等片刻,系统的时间就会被同步到上面设置的时间服务器时间了。如果需要检查Chrony是否正在运行和同步,可以运行以下命令: ``` sudo chronyc tracking ``` 需要注意的是,Chrony需要在/root/.chrony-keys文件中记录每个远程时间服务器的密钥,以保护同步信息的安全性。如果需要更多的Chrony配置选项,可以查看Chrony官方文档。 ### 回答3: Linux系统中,时间同步是非常关键的操作,如果系统时间不准确,会导致很多问题,比如日志记录不准确、排查问题困难等。为了保证系统时间的准确性,Linux系统提供了多种时间同步工具,其中 chrony 是一种非常常用的时间同步工具。 chrony 是一种实现 NTP 协议的时间同步软件,它与传统的 NTP(Network Time Protocol)相比,其优点是更加适合被部署于当今广泛存在的不同类型的网络中。它具有快速同步、稳定性和安全等特点。 使用 chrony 进行时间同步的步骤如下: 1. 安装 chrony 在大多数 Linux 发行版中,chrony 已经预装了,如果没有,则需要使用系统包管理器进行安装。 2. 配置 chrony chrony 的默认配置文件位于 /etc/chrony.conf。在该文件中,你可以修改多种设置,如要使用的 NTP 服务器等。修改完成后,保存并关闭该文件。 3. 启动 chrony 在大多数 Linux 发行版中,chrony 已经完成了自动启动,如果没有,则需要手动启动。可以使用以下命令完成启动: sudo systemctl start chronyd 4. 验证同步情况 可以使用以下命令验证 chrony 是否正在同步系统时间chronyc tracking 该命令会显示系统时间与 NTP 服务器时间之间的偏差以及同步状态。 使用 chrony 进行时间同步,可以使系统时间更加准确,从而保证系统功能的正常运行。另外,在某些特殊场景下,比如高并发的服务环境下,时间同步更是关键。因此,我们必须保证在 Linux 系统中使用时间同步软件的正确性,并进行配置调整和监测跟踪,保证服务应用的数据一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏马潜行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值