对于学术界来说,这是一个愚蠢的问题。UID
如果需要,我知道从哪里获取信息。根据 proc(5) 手册页:
/proc/[number]/stat
Status information about the process. This is used by ps(1). It is defined in /usr/src/linux/fs/proc/array.c.
/proc/[number]/statm
Provides information about memory status in pages. The columns are:
/proc/[number]/status
Provides much of the information in /proc/[number]/stat and /proc/[number]/statm in a format that’s easier for humans to parse.
我发现很有趣的是,它stat
不包含有关进程的 、 等信息,但UID
确实包含。有点奇怪的是,人们被迫使用“人类可读”文件来代替。有谁知道这个临时的原因吗?EUID
status
答案1
在处理数据时,大多数时候,关键是仅保留与您的特定任务集相关的数据,仅此而已。暴露的大部分数据/proc
都是出于单一目的,即需要对其具有可见性的工具等。
鉴于这些评论,我会假设三件事/proc/[number]/stat
:
- 此处显示的数据与 中的函数和数据对象相关
/usr/src/linux/fs/proc/array.c
。 - 该数据也与 相关
ps
。 - 查看此处的数据,您会发现这里没有任何特定于用户的数据。这一切都是面向流程的。
笔记:对于#2。这是与 相关的流程数据ps
。用户拥有的进程保存在内核其他地方的不同数据结构中。
另一方面,对于/proc/[number]/status
,注释几乎可以告诉您这些数据的用途,即人类阅读它的目的。因此,从工具的角度来看,内核中的这个节点很可能没有其他用途,然后将来自其他来源的数据整理到一个地方供用户使用。
额外的证据
如果您需要更多证明,请查看我不久前回答的问题,标题为:/proc/meminfo MemTotal =?。这个问题涵盖了/proc/meminfo
,这里也是一个类似的问题。一些数据在内核启动期间在日志输出下公开dmesg
。然而,尽管这些数据与记忆相关并且被认为相关,但这些数据/proc/meminfo
并不存在,同样是因为它对以下方面没有用处:
- 将使用的工具的目标受众
/proc/meminfo
- 与使用 中数据的内核内部函数、方法和数据结构无关
/proc/meminfo
。