web-dev-qa-db-ja.com

UNIXバリアントでsysctlを使用する方法(例: macOS、Linuxの/ proc / selfに通常ある情報を読むには?

私は長い間/proc/selfを使用して、/proc/self/mapsなどのプロセス関連情報を読み取っています。

ただし、macOSなどの一部のUNIXバリアントでは、procfsファイルシステムは実装されていません。しかし、この link が述べているように、sysctlを使用して同様の情報を取得できるはずです。

sysctl -aからの出力を読むと、情報が特定のプロセスに直接関連付けられているのではなく、システムまたはカーネルに関連付けられていることがわかりました。

では、どうすればsysctlを使用して、macOSなどのUNIXバリアントでLinuxディストリビューションの/proc/selfに通常存在する情報を読み取ることができますか?

私は例えばしたいmacOSで/proc/self/mapsを取得します。

2
Shuzheng

Sysctlには主にシステム全体のパラメーターが含まれているというあなたの観察は適切です。また、sysctl(SYStem ConTroLを示唆している)という名前、および manページ の「sysctl - get or set kernel state」の説明からいくらか続いています。

一部のBSDシステムは、オプションのprocfsファイルシステムサポートを提供します。これは、FreeBSDなどの/procの下にマウントできます。

# mount -t procfs procfs /proc

これは一部の機能を提供しますが、特定のネイティブBSDプロセスの実行時統計への明確な問い合わせではなく、エミュレーションモードでLinuxバイナリを実行する際の互換性の目的でおそらく最も頻繁に使用されます。残念ながら、私の知る限り、OSXはprocfsファイルシステムをサポートしていません。

さらに一般的には、BSDシステムは/procを使用しないため、特定の/procベースのクエリを置き換えるために何を使用するかについての答えは、特定のクエリが何であるかによって異なります。投稿の最近の編集を考えると、このコマンドは特定のプロセスのメモリ使用量を表示するのに役立つ場合があります。

$ Sudo vmmap $$
0
Jim L.