当前位置:首页 > 文章列表 > 文章 > linux > Linux lsclocks 怎样列出系统支持的时钟

Linux lsclocks 怎样列出系统支持的时钟

来源:17golang原创 2026-10-31 10:21:41 0浏览 收藏

在 Linux 上想知道“系统支持哪些时钟”,直接看 date 往往不够:它只回答当前日期时间,并不能把 POSIX 时钟、进程 CPU 时钟、PTP、RTC 和辅助时钟放在同一个视图里。lsclocks 是 util-linux 提供的专门工具,默认会列出可发现的系统时钟,并给出当前时间与分辨率。

最小用法是 lsclocks;需要脚本消费时使用 lsclocks -J,需要只看一个对象时使用 -t,自动发现之外的设备则用 --dynamic-clock 或 --rtc 显式补入。

官方地址:https://github.com/util-linux/util-linux/

先确认 lsclocks 的默认清单

先不要急着加很多参数,默认输出最适合确认两件事:命令是否来自当前系统的 util-linux,以及当前环境能发现哪些时钟。它的目标是“列清单”,不是切换内核时钟源,也不是校准 RTC。

# 先查看系统能发现的时钟、当前值和分辨率
lsclocks

# 需要确认工具版本时,使用帮助或版本选项
lsclocks --version

手册把可见对象分为几类:POSIX 时钟包括 CLOCK_MONOTONIC、CLOCK_REALTIME 和 CLOCK_BOOTTIME 等;CPU 时钟来自进程 CPU 时钟接口;PTP 和 RTC 通常对应设备节点;辅助时钟则是系统提供的 CLOCK_AUX* 对象。清单里看不到某类对象,不等于 Linux 完全不支持它,可能只是当前主机没有相应设备或发现条件。

lsclocks 将 POSIX、CPU、PTP、RTC、辅助时钟和动态发现归入统一清单的静态结构图
图1:时钟来源结构说明图,查看不同类型如何归入 lsclocks 清单;这是静态说明图,不是终端截图。

为什么默认结果和硬件时钟不是一回事

排查时最容易混淆的是“时钟对象”和“内核选中的 clocksource”。Linux 内核的 timekeeping 文档讨论的是内核如何读取时钟源来维护时间;lsclocks 则提供用户空间可观察对象的清单、当前时间和分辨率。两者相关,但不是同一个查询。

可以按下面的思路判断:

  • 只想知道可用对象:先看默认 lsclocks 输出。
  • 想看某个硬件时钟:关注 /dev/ptp0、/dev/rtc0 这类路径,并用显式参数加入。
  • 想分析调度或计时精度:关注 TIME、RESOL,再结合程序实际使用的 clock ID。

因此,看到 RTC 行并不能推出系统当前正在用 RTC 做所有单调计时;同样,看到高分辨率字段也不能直接推出业务延迟一定更低。

用列选择和单时钟查询缩小范围

默认表格适合人读,排查特定问题时可以减少字段。--output 选择需要的列,--output-all 展开全部列;具体列名以当前系统的帮助输出为准。手册列出的字段包括原始名称、短名称、当前时间、ISO8601 时间、原始分辨率和可读分辨率。

# 只保留名称、可读时间和可读分辨率,便于人工比较
lsclocks --output NAME,TIME,RESOL

# 查看当前版本支持的全部列,再按需复制列名
lsclocks --help

# 只查询一个时钟;这里的名称应替换为默认清单中真实存在的名称
lsclocks --time CLOCK_MONOTONIC

-t(--time)用于显示一个指定时钟的当前值。它不是“把系统时间改成这个时钟”,也不会改变内核时钟配置。若只是为了脚本稳定解析,不要依赖人读表格中的空格对齐,优先考虑下一节的 JSON 输出。

lsclocks 查询选项与 TIME、ISO_TIME、RESOL 字段及 JSON 脚本输入的静态关系图
图2:输出字段关系说明图,查看查询入口、时间字段、分辨率字段和脚本输入的关系;这是静态说明图,不是运行结果截图。

用 JSON、动态时钟和 RTC 处理特殊环境

当结果要交给 shell、Python 或监控采集器时,使用 -J(--json)更合适。JSON 只改变输出格式,不会凭空增加主机上不存在的时钟。

# 用 JSON 输出,避免脚本依赖表格列宽
lsclocks -J

# 明确加入一个动态时钟;路径应替换为环境中确实存在的设备
lsclocks --dynamic-clock /dev/ptp0

# 明确加入 RTC;没有该设备时不要把路径写死到部署脚本
lsclocks --rtc /dev/rtc0

默认情况下,工具会尝试发现动态时钟和 RTC;--no-discover-dynamic、--no-discover-rtc 可以关闭对应的自动发现。如果你需要测试“仅保留默认对象”的采集行为,这两个选项很有用。反过来,容器、虚拟机或权限受限环境中,显式路径可能不存在、不可访问或不代表宿主机的完整设备集合,脚本应把“没有该行”当成环境差异处理,而不是直接判定命令失效。

常见误区与速查

需求推荐写法注意
列出可发现时钟lsclocks清单取决于当前环境
机器解析lsclocks -J不要解析对齐空格
只看一个时钟lsclocks -t CLOCK_...先确认名称存在
补入设备时钟--dynamic-clock PATH 或 --rtc PATH路径和权限由主机决定

最后可以按三步复查:先用默认输出确认对象范围,再用 -o 或 -t 缩小问题,最后用 -J 固化脚本输入。这样既不会把“显示时钟”误认为“切换时钟源”,也能把设备差异留在明确的边界里。

相关问题

lsclocks 能修改系统时间吗?

不能。它负责显示时钟对象及其属性;修改系统时间、校准 RTC 或选择内核时钟源属于其他工具和配置路径。

为什么不同机器上的 lsclocks 行数不同?

POSIX 时钟、进程 CPU 时钟、PTP、RTC 和动态设备的可见性受内核、硬件、容器和权限影响,清单不同是正常边界。

脚本应该解析哪个字段?

优先使用 -J 的结构化结果,并按实际需求选择 NAME、TIME、ISO_TIME 或 RESOL,不要依赖默认表格的列顺序。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Python tabnanny 怎样定位缩进中混用制表符的问题Python tabnanny 怎样定位缩进中混用制表符的问题
上一篇
Python tabnanny 怎样定位缩进中混用制表符的问题
Go llrb ReplaceOrInsert怎样判断两个对象相同
下一篇
Go llrb ReplaceOrInsert怎样判断两个对象相同
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    809次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    798次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    890次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    861次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    687次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码