chronyc sources * 为空但 chronyd 运行正常的配置问题

云墨吖_6423

云墨吖_6423

2026-01-27

650人浏览

原创

chronyc sources 返回空列表的主因是 Unix socket 路径不匹配、bindcmdaddress 未配置、SELinux 拦截或 systemd socket 单元冲突;需检查 /run/chrony/chronyd.sock 是否存在并可访问,确认 chrony.conf 含 bindcmdaddress /run/chrony/chronyd.sock,排查 SELinux 策略及禁用 chronyd.socket 单元。

chronyc sources * 为空但 chronyd 运行正常的配置问题

chronyc sources 返回空列表但 chronyd 进程在运行

chronyc sources 显示空(甚至直接报 No such file or directory),而 systemctl status chronyd 显示 active (running),说明 chronyd 进程起来了,但没和客户端建立通信通道。最常见原因是 socket 路径不匹配或权限问题。

  • chronyd 默认监听 Unix domain socket:/var/run/chrony/chronyd.sock
  • 但某些发行版(如 CentOS 7、RHEL 7)默认使用 /run/chrony/chronyd.sock(无 var)
  • 如果 chronyc 没指定路径,它会按编译时默认顺序尝试多个路径,失败后静默退出,看起来就像“没输出”

检查实际 socket 是否存在且可访问:

ls -l /var/run/chrony/chronyd.sock /run/chrony/chronyd.sock 2>/dev/null

如果只有 /run/chrony/chronyd.sock 存在,就用:

chronyc -p /run/chrony/chronyd.sock sources

chronyd 配置里没启用 command socket 或路径被覆盖

chronyd 不会自动创建 socket 目录或监听命令接口,除非配置明确启用。检查 /etc/chrony.conf 是否含以下任一配置:

  • 缺少 commandkey + keyfile(旧版本要求密钥认证才能响应命令)
  • 没有 bindcmdaddress,或写成了 bindcmdaddress 127.0.0.1(只监听 TCP,不建 Unix socket)
  • 使用了 cmdport 0(禁用命令端口)

关键项应至少包含:

  • bindcmdaddress /run/chrony/chronyd.sock(推荐显式指定路径)
  • keyfile /etc/chrony.keys(即使不用密钥,文件也得存在且非空)
  • commandkey 1(与 keys 文件中第 1 行 key ID 匹配)

如果不想用密钥,可加 rtcsync 后加 noclientlog,但 socket 仍需启用——bindcmdaddress 是必须的。

SELinux 或 systemd socket 激活干扰了 socket 创建

在 RHEL/CentOS 等启用了 SELinux 的系统上,chronyd 可能因策略限制无法在 /run/chrony/ 下创建 socket,日志里会出现类似:

avc: denied { create } for comm="chronyd" name="chronyd.sock" scontext=... tcontext=... tclass=sock_file

临时确认是否 SELinux 导致:

sudo setenforce 0 && sudo systemctl restart chronyd && chronyc sources

若此时正常,说明是策略问题。永久修复需调整策略或确保 chronyd_t 域有 unix_stream_socket 创建权限。

Linux Omniscient
Linux Omniscient

>全知全能技能Linux版。

下载

另一个常见干扰:systemd 的 socket 激活单元(chronyd.socket)被启用,但 chronyd.service 没禁用,导致两个实例争抢 socket。检查:

systemctl is-enabled chronyd.socket chronyd.service

如果两者都 enabled,禁用 socket 单元:

sudo systemctl disable chronyd.socket

,再重启 service。

chronyc 找不到 chronyd.sock 的 fallback 行为被静默忽略

chronyc 在找不到 socket 时不会报错,而是直接返回空输出(exit code 1),这极易误判为“没数据”。用 strace 可验证:

strace -e trace=connect chronyc sources 2>&1 | grep "No such"

你会看到它依次尝试:

connect(3, {sa_family=AF_UNIX, sun_path="/var/run/chrony/chronyd.sock"}, 110) = -1 ENOENT
connect(3, {sa_family=AF_UNIX, sun_path="/run/chrony/chronyd.sock"}, 110) = -1 ENOENT

只要所有路径都失败,就静默退出。所以不要只信 chronyc sources 的空输出——它只代表“连不上”,不等于“没源”。

真正判断 NTP 源是否生效,看:

chronyc tracking

如果有 System clock 行且 offset 很小,说明对时已在工作;sources 空只是管理通道断了。

socket 路径不一致、bindcmdaddress 缺失、SELinux 拦截、systemd socket 冲突——这四个点覆盖了 90% 的“chronyc sources 空但 chronyd 活着”的真实原因。调试时优先查 socket 文件是否存在且路径匹配,比翻日志更快。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux centos unix stream

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3248

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

5509

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3909

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

506

15

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4570

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3833

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

3153

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

7830

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

7462

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习