为什么UID信息不在/proc/X/stat中?

为什么UID信息不在/proc/X/stat中?

对于学术界来说,这是一个愚蠢的问题。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确实包含。有点奇怪的是,人们被迫使用“人类可读”文件来代替。有谁知道这个临时的原因吗?EUIDstatus

答案1

在处理数据时,大多数时候,关键是仅保留与您的特定任务集相关的数据,仅此而已。暴露的大部分数据/proc都是出于单一目的,即需要对其具有可见性的工具等。

鉴于这些评论,我会假设三件事/proc/[number]/stat

  1. 此处显示的数据与 中的函数和数据对象相关/usr/src/linux/fs/proc/array.c
  2. 该数据也与 相关ps
  3. 查看此处的数据,您会发现这里没有任何特定于用户的数据。这一切都是面向流程的。

笔记:对于#2。这是与 相关的流程数据ps。用户拥有的进程保存在内核其他地方的不同数据结构中。

另一方面,对于/proc/[number]/status,注释几乎可以告诉您这些数据的用途,即人类阅读它的目的。因此,从工具的角度来看,内核中的这个节点很可能没有其他用途,然后将来自其他来源的数据整理到一个地方供用户使用。

额外的证据

如果您需要更多证明,请查看我不久前回答的问题,标题为:/proc/meminfo MemTotal =?。这个问题涵盖了/proc/meminfo,这里也是一个类似的问题。一些数据在内核启动期间在日志输出下公开dmesg。然而,尽管这些数据与记忆相关并且被认为相关,但这些数据/proc/meminfo并不存在,同样是因为它对以下方面没有用处:

  1. 将使用的工具的目标受众/proc/meminfo
  2. 与使用 中数据的内核内部函数、方法和数据结构无关/proc/meminfo

参考

相关内容