Linux

如何在 UNIX 變體(例如 macOS)上使用 sysctl 來讀取通常在 Linux 上的 /proc/self 中找到的資訊?

  • April 27, 2022

我已經使用/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:

# mount -t procfs procfs /proc

這提供了一些功能,但可能最常用於在仿真模式下執行 Linux 二進製文件時出於兼容性目的,而不是用於確定查詢特定本機 BSD 程序的執行時統計資訊。procfs不幸的是,據我所知,OS X 不支持文件系統。

更一般地說,BSD 系統不使用/proc,因此使用什麼來替換基於特定/proc的查詢的答案取決於具體的查詢是什麼。鑑於最近對您的文章進行的編輯,您可能會發現此命令有助於顯示特定程序的記憶體使用情況:

$ sudo vmmap $$

引用自:https://unix.stackexchange.com/questions/537806