开发工具【免费下载链接】jcCLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.项目地址https://gitcode.com/gh_mirrors/jc/jc点击查看免费下载导读/proc/net/netlink是 Linux 内核暴露的 netlink 套接字注册表文件记录了系统中所有已注册的 netlink 协议族及其关联的内核套接字sk信息。jc 项目为此提供了专用的文件解析器proc_net_netlink源码位于 jc/parsers/proc_net_netlink.py可把该文件的文本表格直接转换为结构化的 JSON / YAML / Python 字典从而方便使用 jq 等工具进行过滤、统计与自动化脚本编写。读完本文你将掌握该解析器的 CLI 与模块级调用方式、完整输出 Schema、字段含义以及它背后的实现原理与测试验证方法。一、/proc/net/netlink文件与 jc 解析器概述Linux 的/proc/net/netlink伪文件以纯文本表格形式输出内核中 netlink 套接字的登记信息典型内容如下来源tests/fixtures/linux-proc/net_netlinksk Eth Pid Groups Rmem Wmem Dump Locks Drops Inode ffff9b61adaff000 0 1 800405d5 0 0 0 2 0 29791 ffff9b61a792a000 0 837 00000111 0 0 0 2 0 35337 ffff9b61b8e4d000 0 0 00000000 0 0 0 2 0 17该表共 10 列sk、Eth、Pid、Groups、Rmem、Wmem、Dump、Locks、Drops、Inode。由于它是一张规整的简单表格无空单元格、末列可含空格jc 直接复用了通用解析函数simple_table_parse定义于 jc/parsers/universal.py完成行到字典的转换再交由专用处理函数做类型归一化。从解析器元数据jc/parsers/proc_net_netlink.py可知版本号1.0作者 Kelly Brazil兼容平台linux该伪文件仅存在于 Linux标签file属于文件类解析器hidden True表示该解析器不会在--help的常规解析器列表中单独暴露而是通过--proc自动识别或--proc-net-netlink显式指定。二、CLI 命令行用法2.1 通过--proc自动识别将文件内容通过管道交给 jc并由通用的--proc入口自动识别$ cat /proc/net/netlink | jc --proc2.2 直接指定文件路径jc 支持直接传入文件路径进行解析内部会读取文件内容后按文件类型分派$ jc /proc/net/netlink2.3 显式指定解析器当需要精确指定或绕过自动识别逻辑时使用--proc-net-netlink$ cat /proc/net/netlink | jc --proc-net-netlink自动识别原理在 jc/parsers/proc.py 中proc 分派器通过正则^sk\sEth Pid\sGroups\sRmem\sWmem匹配该文件的表头命中后经procmap映射表jc/parsers/proc.py将解析任务分发给proc_net_netlink。因此只要表头符合该格式即使列顺序略有变化也能被自动识别。2.4 输出模式说明默认输出为紧凑 JSON常用参数参数作用-p美化pretty输出逐行缩进、便于阅读-r原始raw模式输出解析后的原始字符串值不做类型转换-y输出 YAML 格式-m输出带元数据如解析器名、版本、时间戳等的 JSON示例美化且保留原始字符串值$ cat /proc/net/netlink | jc --proc-net-netlink -p -r三、Python 模块用法在 Python 代码中将文件内容作为字符串传入即可。读取文件import jc with open(/proc/net/netlink, r, encodingutf-8) as f: proc_net_netlink_file f.read()3.1 通过通用parse(proc, ...)调用import jc result jc.parse(proc, proc_net_netlink_file)3.2 通过专用解析器名调用import jc result jc.parse(proc_net_netlink, proc_net_netlink_file)3.3 直接使用解析函数import jc.parsers.proc_net_netlink as parser result parser.parse(proc_net_netlink_file) # 处理后的结构化数据 result_raw parser.parse(proc_net_netlink_file, rawTrue) # 原始字符串数据parse()函数签名与参数见 jc/parsers/proc_net_netlink.pydef parse(data: str, raw: bool False, quiet: bool False) - List[Dict]参数类型说明datastring待解析的文本数据/proc/net/netlink文件全文rawboolean为True时返回未做类型转换的原始输出quietboolean为True时抑制警告信息如平台兼容性警告返回值List[Dict]即字典列表元素结构与下方 Schema 一致。四、输出 Schema 与字段详解处理后的每条记录对应一个已注册的 netlink 套接字Schema 如下与文档 docs/parsers/proc_net_netlink.md 及源码 docstring 完全一致[ { sk: string, Eth: integer, Pid: integer, Groups: string, Rmem: integer, Wmem: integer, Dump: integer, Locks: integer, Drops: integer, Inode: integer } ]字段类型含义skstring内核套接字socket结构体在内核地址空间的十六进制指针地址是每条记录的唯一标识Ethintegernetlink 协议族编号如 0 表示路由信息、4 表示防火墙、9 表示NETLINK_KOBJECT_UEVENT、15 表示NETLINK_NETFILTER、16/18 为 sock_diag 相关Pidinteger与该套接字绑定的用户态进程 PID组播监听且未绑定时为 0fd 转 netlink 时会记录对端进程号Groupsstring该套接字订阅的 netlink 组掩码以十六进制字符串表示如800405d5、00000111Rmeminteger套接字接收缓冲区当前已使用的字节数Wmeminteger套接字发送缓冲区当前已使用的字节数Dumpinteger转储dump状态标志Locksinteger套接字当前被持有的锁数量Dropsinteger该套接字丢弃的数据包/消息计数Inodeinteger该套接字对应的 inode 编号注意sk和Groups在源码处理逻辑中保持为字符串其余 8 个字段Eth、Pid、Rmem、Wmem、Dump、Locks、Drops、Inode会被转换为整数这一规则由_process中的int_list集合显式定义jc/parsers/proc_net_netlink.py。若使用-r/rawTrue则所有字段含数值列均以原始字符串返回。五、源码级实现原理5.1 解析流程parse()的执行顺序如下jc/parsers/proc_net_netlink.py兼容性检查调用jc.utils.compatibility(__name__, info.compatible, quiet)当运行平台不在[linux]中且quietFalse时打印警告输入类型检查调用jc.utils.input_type_check(data)校验参数类型空数据保护调用jc.utils.has_data(data)见 jc/utils.py无数据时直接返回空列表[]表格解析对data.splitlines()调用simple_table_parse生成「列名 → 字符串值」的字典列表返回rawTrue时原样返回该列表否则交给_process做类型转换。5.2 通用表格解析器simple_table_parse该函数jc/parsers/universal.py实现了一个轻量的简单表格解析headers [h for h in .join(data[0].strip().split()).split() if h] raw_data map(lambda s: s.strip().split(None, len(headers) - 1), data[1:]) raw_output [dict(zip(headers, r)) for r in raw_data]其要点是首行为表头将表头行按空白折叠后拆分为列名列表正因如此/proc/net/netlink的表头才能从多空格对齐列还原为干净的字段名数据行按空白分割使用split(None, len(headers) - 1)将每行最多切成表头数目的字段末列允许包含空格适用于无空单元格的规整表格若表格存在缺列则应改用同文件中的sparse_table_parse。5.3 类型归一化_process_processjc/parsers/proc_net_netlink.py遍历每条记录对int_list中的键执行int(val)转换实现从文本到 Schema 规定类型的对齐。5.4 与 proc 自动识别框架的集成/proc系列文件数量众多jc 通过 jc/parsers/proc.py 中「表头正则 解析器映射」的方式统一分派proc_net_netlink被注册在procmap中与proc_net_arp、proc_net_tcp、proc_net_unix等同属net_*网络族解析器。六、典型输出示例6.1 处理后的结构化输出$ cat /proc/net/netlink | jc --proc -p[ { sk: ffff9b61adaff000, Eth: 0, Pid: 1, Groups: 800405d5, Rmem: 0, Wmem: 0, Dump: 0, Locks: 2, Drops: 0, Inode: 29791 }, { sk: ffff9b61a792a000, Eth: 0, Pid: 837, Groups: 00000111, Rmem: 0, Wmem: 0, Dump: 0, Locks: 2, Drops: 0, Inode: 35337 } ]6.2 原始raw模式输出$ cat /proc/net/netlink | jc --proc-net-netlink -p -r[ { sk: ffff9b61adaff000, Eth: 0, Pid: 1, Groups: 800405d5, Rmem: 0, Wmem: 0, Dump: 0, Locks: 2, Drops: 0, Inode: 29791 }, { sk: ffff9b61a792a000, Eth: 0, Pid: 837, Groups: 00000111, Rmem: 0, Wmem: 0, Dump: 0, Locks: 2, Drops: 0, Inode: 35337 } ]对比可见raw 模式下数值字段全部保留为字符串便于保留原始文本语义而默认模式下数值已被_process规范化为整数。6.3 与 jq 组合使用转换为 JSON 后即可直接管道给 jq 做过滤统计例如按协议族分组统计套接字数量$ cat /proc/net/netlink | jc --proc | jq group_by(.Eth) | map({Eth: .[0].Eth, count: length})七、测试与验证仓库为proc_net_netlink提供了完整的单元测试与真实抓取固件fixture测试文件tests/test_proc_net_netlink.py包含两个用例test_proc_net_netlink_nodata验证空输入返回[]test_proc_net_netlink读取 tests/fixtures/linux-proc/net_netlink 原始文本与期望的 tests/fixtures/linux-proc/net_netlink.json 结构化结果逐条断言相等固件文件共 26 行真实数据覆盖Eth取值 0、4、7、9、10、11、15、16、18 等多种 netlink 协议族以及Pid为 0、1、835、837、2875 等不同绑定形态可用来验证解析器对各类行格式的兼容性。运行该测试$ python -m unittest tests.test_proc_net_netlink八、适用前提与注意事项平台限制/proc/net/netlink仅存在于 Linux 内核的 procfs 中解析器compatible [linux]在非 Linux 平台调用时会输出兼容性警告除非quietTrue且文件读取本身会失败。权限读取/proc/net/netlink无需 root 权限但部分字段的完整信息在不同内核版本上可能有差异。字段语义随内核版本变化Pid列在较新内核中记录的是绑定进程或通过 fd 传递时关联的进程号分析时不应假设其为固定含义。该解析器为 hidden 解析器它不单独出现在解析器列表中必须通过--proc自动识别或--proc-net-netlink显式调用这一点与proc家族其余成员一致。表头格式匹配是自动识别的关键只有当数据首行匹配正则^sk\sEth Pid\sGroups\sRmem\sWmem时--proc才会将其分派给本解析器。九、总结proc_net_netlink是 jc 项目proc文件解析家族中面向 netlink 套接字注册表的一个专用解析器。它依托simple_table_parse通用表格解析能力快速完成文本到字典的映射再通过_process完成类型规范化最终以List[Dict]形式输出与 Schema 严格一致的 JSON 结构。无论是通过cat /proc/net/netlink | jc --proc的管道式一行命令还是通过jc.parse(proc_net_netlink, ...)的 Python 模块调用你都能在几秒内把原本难以直接消费的内核文本表格变成可查询、可统计、可编程处理的半结构化数据为网络诊断脚本与系统监控自动化提供可靠的数据基础。赞分享开发工具【免费下载链接】jcCLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.项目地址https://gitcode.com/gh_mirrors/jc/jc点击查看免费下载相关推荐PFPO 训练显存不足时如何按推荐顺序切换 DeepSpeed ZeRO 与张量并行PFPO 训练显存不足时如何按推荐顺序切换 DeepSpeed ZeRO 与张量并行 在 PFPOPreference Optimization for R开发工具jc proc-net-arp 解析器将 Linux /proc/net/arp 的 ARP 缓存结构化为 JSON 的实战指南jc proc net arp 解析器将 Linux /proc/net/arp 的 ARP 缓存结构化为 JSON 的实战指南 本篇技术指南基于 proc_开发工具jc proc_filesystems 解析器将 Linux /proc/filesystems 文件结构化解析为 JSONjc proc_filesystems 解析器将 Linux /proc/filesystems 文件结构化解析为 JSON 本文围绕 jc 的 proc_f开发工具上一篇Nuclide任务并行执行插件高级调度与资源管理下一篇openvr_fsr开发者指南如何将FSR/NIS技术集成到自定义VR应用中创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
深度学习道路裂缝检测实战:从数据集构建到U-Net分割与裂缝量化 简介:面向深度学习与图像分割任务的道路裂缝数据集,适合目标检测、语义分割等模型的训练、评估与算法验证。资源包共20751个文件,以20250张jpg原始道路裂缝图像作为主体,另含250个labelme生成的json标注文件、250张由json批量转换… · 2026/9/26 2:32:09
基于1500张绵羊检测数据集:YOLOv8训练、避坑与半自动标注实战 简介:本资源为面向目标检测任务的绵羊检测数据集,从COCO2017数据集中提取整理而成,适合从事YOLO等检测算法学习与实验的开发者、学生及研究人员使用,可用于模型训练、验证与算法对比。压缩包共4783个文件,包含1594张jp… · 2026/9/26 2:59:22
AI Short(ChatGPT Shortcut)配置与自定义实战:从站点标题、首页提示词到自建后端 AI 应用提示工程人工智能前端 【免费下载链接】ChatGPT-Shortcut Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词&… · 2026/9/26 2:59:21
YOLOv8摔倒检测实战:从数据标注到部署的完整代码与避坑指南 简介:这份资源是面向深度学习初学者与安防、体育分析方向开发者的YOLOv8摔倒检测完整代码包,用于快速搭建可识别视频或图像中人物摔倒事件的目标检测系统,可应用于老年人监护、公共场所安全监控及运动员训练反馈等场景。压缩包为zip格式&… · 2026/9/26 2:59:15
BlockSuite 预设完全上手指南:5 行代码集成 PageEditor 和 EdgelessEditor BlockSuite 预设完全上手指南:5 行代码集成 PageEditor 和 EdgelessEditor 【免费下载链接】blocksuite 🧩 Content editing tech stack for the web - BlockSuite is a toolkit for building editors and collaborative applications. 项目地址: http… · 2026/9/26 2:59:09
Swift 第三方 DebugCenter功能 一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络࿰… · 2026/9/26 2:59:09
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46