web-dev-qa-db-ja.com

OS Xで開いているファイル(記述子)のリストを取得する

Os x(10.9.1)のプロセスで開いているファイルのリストを取得したいと思います。 Linuxでは、/proc/PID/fd。しかし、OS Xで同じことをする方法がわかりません。OSXにはprocfsが存在しないことがわかりました(デフォルトでは、実装は可能ですが、そのようにはしたくありません)。

OS Xのプロセスで開いているファイルのリストを(ネイティブで)取得するにはどうすればよいですか。1つの方法はlsofです。他に利用可能なサポートはありますか?これに関する詳細情報を入手できる場所を教えてください。

ありがとう。

49
user3169543

少なくともOSX 10.10(Yosemite、Mavericksではチェックしていません)では、デフォルトのアクティビティモニターアプリケーションを介して、プロセスごとに開いているファイルのリストを取得できます。リスト上の関連プロセスをダブルクリックし、ポップアップの「ファイルとポートを開く」タブを選択するだけです。

ヒント:そのペインのcmd + fショートカットを使用すると、コンテンツを検索および強調表示できます。

38
Fuu

ルートとして(Sudo経由で)実行されているプロセスの開いているファイルをアクティビティモニターに表示するのに苦労しました。元の質問はlsofに言及しており、それは正確にトリックを行います。プロセス名またはPIDがわかっている場合は、非常に簡単です。

名前でプロセスを検索:

lsof -c processname

PIDでプロセスを検索:

lsof -p 123

(プロセスの所有者ではない場合など、必要に応じてSudoをプレフィックスとして付けます。)

44
smitelli

これはいくつかのことに役立ちます:

Sudo fs_usage | grep dev

ために /dev/ファイルまたは類似のもの。

6
eulerworks

現在のプロセスを検査するためのクリーンでシンプルなアプローチ(i.e。同等の /proc/self/fd Linuxの場合)はls /dev/fd/

e.g。

$ touch "file"
$ exec 3<>file

$ ls /dev/fd/    

0 1 2 3
4
Travis Clarke

私は非常に便利なWhat's Openアプリケーションを使用します(フィルター、ディスク選択など)。

そこにあります: http://whatsopen.en.softonic.com/mac

2
Laurent Lasudry

「[lsof]以外のサポートが利用可能ですか?」と尋ねたので、これを試してください:

この質問に対する選択された回答で参照されている「proc_pidinfo」C APIを使用してコマンドラインツールを作成します。 OS Xで特定のPIDのオープンファイル記述子のリストをプログラムで取得するにはどうすればよいですか

PROC_PIDLISTFDSオプションを指定してproc_pidinfoを使用すると、特定のプロセスで使用されるファイルを列挙できます。その後、PROC_PIDFDVNODEPATHINFOオプションを使用して各ファイルでproc_pidfdinfoを順番に使用して、パスを取得できます。

1
Mike C.

/ Volumes/VolumeNameで開いているファイルをリストします。

lsof | grep "/Volumes/VolumeName"
1
Dmitry