Linux
如何在 UNIX 變體(例如 macOS)上使用 sysctl 來讀取通常在 Linux 上的 /proc/self 中找到的資訊?
我已經使用
/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 $$