我最感兴趣的是提供系统信息的文件,例如/proc/mdstat
、/proc/crypto
和/proc/cpuinfo
。/proc/mdstat
最简洁地说明了这一点:
-
cat /proc/mdstat
-
Personalities : unused devices: <none>
这很有趣,因为您会认为为了解析,您可能始终对键名使用一致的大写字符,并在有空格时使用引号(如 JSON5)或至少一致地应用逻辑值(如
<none>
没有数据时)。这让人困惑。我无法想象它实际上遵循了什么。
其余部分看起来是用空格分隔的,相当于.TSV
s:
major minor #blocks name
259 0 1953514584 nvme3n1
259 2 1953510400 nvme3n1p1
259 1 1953514584 nvme1n1
259 3 614400 nvme1n1p1
259 4 1048576 nvme1n1p2
259 5 1951850496 nvme1n1p3
259 6 250059096 nvme0n1
259 7 244198584 nvme2n1
259 8 16384 nvme2n1p1
259 9 243446784 nvme2n1p2
259 10 733184 nvme2n1p3
252 0 8388608 zram0
7 0 4 loop0
7 1 106488 loop1
7 2 106692 loop2
7 3 65480 loop3
7 4 65480 loop4
7 5 75996 loop5
7 6 76020 loop6
7 7 71928 loop7
7 9 71840 loop9
7 8 93888 loop8
7 10 39664 loop10
7 11 39760 loop11
7 12 2120 loop12
...所以它们不感兴趣。
无。所有这些都是通过一系列 seq_printf() 调用手工制作的,其模糊意图是让使用 C sscanf()(这使得解析分隔和固定宽度字段的混合变得有些方便)和/或正则表达式的人“机器可读”。
其中一些根本不是机器可读的,例如“mdstat”文件,和/或被更结构化的系统取代的旧接口,例如/proc/self/net 中的路由表是一个非常古老的接口,早已被 Netlink 取代。