Os x(10.9.1)のプロセスで開いているファイルのリストを取得したいと思います。 Linuxでは、/proc/PID/fd
。しかし、OS Xで同じことをする方法がわかりません。OSXにはprocfsが存在しないことがわかりました(デフォルトでは、実装は可能ですが、そのようにはしたくありません)。
OS Xのプロセスで開いているファイルのリストを(ネイティブで)取得するにはどうすればよいですか。1つの方法はlsof
です。他に利用可能なサポートはありますか?これに関する詳細情報を入手できる場所を教えてください。
ありがとう。
少なくともOSX 10.10(Yosemite、Mavericksではチェックしていません)では、デフォルトのアクティビティモニターアプリケーションを介して、プロセスごとに開いているファイルのリストを取得できます。リスト上の関連プロセスをダブルクリックし、ポップアップの「ファイルとポートを開く」タブを選択するだけです。
ヒント:そのペインのcmd + fショートカットを使用すると、コンテンツを検索および強調表示できます。
ルートとして(Sudo経由で)実行されているプロセスの開いているファイルをアクティビティモニターに表示するのに苦労しました。元の質問はlsof
に言及しており、それは正確にトリックを行います。プロセス名またはPIDがわかっている場合は、非常に簡単です。
名前でプロセスを検索:
lsof -c processname
PIDでプロセスを検索:
lsof -p 123
(プロセスの所有者ではない場合など、必要に応じてSudo
をプレフィックスとして付けます。)
これはいくつかのことに役立ちます:
Sudo fs_usage | grep dev
ために /dev/
ファイルまたは類似のもの。
現在のプロセスを検査するためのクリーンでシンプルなアプローチ(i.e。同等の /proc/self/fd
Linuxの場合)はls /dev/fd/
:
e.g。
$ touch "file"
$ exec 3<>file
$ ls /dev/fd/
0 1 2 3
私は非常に便利なWhat's Openアプリケーションを使用します(フィルター、ディスク選択など)。
そこにあります: http://whatsopen.en.softonic.com/mac 。
「[lsof]以外のサポートが利用可能ですか?」と尋ねたので、これを試してください:
この質問に対する選択された回答で参照されている「proc_pidinfo」C APIを使用してコマンドラインツールを作成します。 OS Xで特定のPIDのオープンファイル記述子のリストをプログラムで取得するにはどうすればよいですか
PROC_PIDLISTFDSオプションを指定してproc_pidinfoを使用すると、特定のプロセスで使用されるファイルを列挙できます。その後、PROC_PIDFDVNODEPATHINFOオプションを使用して各ファイルでproc_pidfdinfoを順番に使用して、パスを取得できます。
/ Volumes/VolumeNameで開いているファイルをリストします。
lsof | grep "/Volumes/VolumeName"