如何让chrony从TCP套接字获取GPS时间?配置无效问题排查
排查chronyd无法从GPS套接字同步时间的常见问题
套接字类型不匹配:chronyd的
SOCKrefclock默认仅支持UDP套接字,若你的转发程序或调制解调器用的是TCP套接字,chronyd根本无法读取数据。要么将转发程序改为创建UDP套接字,要么确认你的chronyd版本是否支持在refclock配置行添加proto tcp参数。权限不足:chronyd通常以
chrony用户身份运行,/tmp/gps.sock的权限需允许该用户读写。可直接调整权限:chown chrony:chrony /tmp/gps.sock chmod 660 /tmp/gps.sock也可以让转发程序在创建套接字时直接设置正确权限。
GGPA格式不符合解析要求:chronyd的SOCK驱动需要接收可识别的时间格式(如NTP数据包、标准GPS时间戳),如果GGPA是自定义格式,chronyd无法解析。需让转发程序将GGPA转换为chrony能识别的格式,比如提取GPS时间戳包装成NTP包,或者输出包含时间、精度的标准字符串。
配置参数存在问题:
precision 1e-1(0.1秒)的精度设置过于保守,GPS时间精度可达纳秒级,建议改为1e-9,过高的精度阈值可能导致chronyd判定数据源不可靠。poll 3对应8秒轮询间隔,若GPS数据发送频率低于该间隔,chronyd会认为数据源不可用,可先改为poll 1(2秒)测试。- 务必注释掉配置文件中所有
server或pool项,确保GPS是唯一同步源,避免chronyd优先选择其他时间源。
查看日志定位错误:检查chronyd日志文件(通常为
/var/log/chrony/chronyd.log或/var/log/messages),日志会记录refclock的初始化状态、数据接收情况或具体错误(如无法打开套接字)。验证套接字状态:用
ss -xulnp | grep chronyd检查chronyd是否正在监听指定套接字,同时用nc或自定义工具测试套接字能否正常接收GGPA数据。
内容的提问来源于stack exchange,提问作者user1470618
相关产品推荐
相关产品推荐

