proc
Linux 上的文件系统更新频率如何?是20毫秒(时间量子)吗?
答案1
您从 proc 文件系统读取的信息不会存储在任何介质上(甚至不在 RAM 中),因此无需更新任何内容。
proc 文件系统的目的是允许用户空间程序使用简单且熟悉的文件系统语义(open
、close
、read
、write
、lseek
)来获取或设置内核数据,即使读取或写入的数据不驻留在任何介质上。对于获取和设置无法提前指定格式的数据,这种设计决策被认为比实现诸如 ASN1 编码的 OID 之类的东西更好(例如,人类可读且易于编写脚本),后者也可以很好地工作。
从 proc 文件系统读取时看到的数据是从文件开头读取时即时生成的。也就是说,执行读取操作会导致特定于您正在读取的文件的内核回调函数生成数据。对文件的开头进行操作lseek
并再次读取会导致再次调用再次生成数据的回调。类似地,当您写入 proc 文件系统中的可写文件时,会调用一个回调函数来解析输入并设置内核变量。不存储原始形式的输入数据。
上面只是用稍微详细一点的方式来表达 Hauke Laging 的简洁表述。我建议你接受他的回答。
答案2
每次访问时都会更新。您会看到那一刻内核的状态。这就是为什么“文件”显示的大小不是真实大小的原因。实际大小可能会发生变化,并在您访问文件时确定。
你可能会说,可能好几天不更新了。如果你不看的话。 :-)