我已经使用/proc/self
了很长时间来阅读与流程相关的信息,例如/proc/self/maps
等。
但是,在某些 UNIX 变体上,例如 macOS,procfs
文件系统没有实现;但正如此链接所述,应该可以使用sysctl
.
从 中读取输出sysctl -a
,我发现信息与任何特定进程没有直接关联,而是与系统或内核有关。
那么,我如何使用macOS 等 UNIX 变体sysctl
来读取通常存在于 Linux 发行版中的信息?/proc/self
我想例如/proc/self/maps
上 macOS。
您观察到 sysctl 主要包含系统范围的参数是恰当的。它在某种程度上也源于名称
sysctl
(暗示 SYStem ConTroL)和手册页对“sysctl - get or set kernel state
.”的描述。一些 BSD 系统确实提供了可选
procfs
的文件系统支持,可以安装在 下/proc
,例如 FreeBSD:这提供了一些功能,但可能最常用于在仿真模式下运行 Linux 二进制文件时的兼容性目的,而不是用于确定查询特定本机 BSD 进程的运行时统计信息。
procfs
不幸的是,据我所知,OS X 不支持文件系统。更一般地说,BSD 系统不使用
/proc
,因此使用什么来替换/proc
基于特定查询的答案取决于具体查询是什么。鉴于最近对您的帖子进行的编辑,您可能会发现此命令有助于显示特定进程的内存使用情况: