2014-01-07 92 views
28

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

それでは、どのように私は一つの方法は、lsofであるOS X上のプロセスに(ネイティブ)開いているファイルの一覧を取得します。他のサポートはありますか?私がこれについての詳しい情報を得ることができる場所を教えてください。

ありがとうございました。

+0

'lsof'はタイトル自体の疑問に対する推定回答です。タイトルをより具体的にすることを検討しますか? – benc

答えて

29

OSX 10.10上に少なくとも(ヨセミテ、マーベリックスにチェックしていなかった)は、デフォルトのアクティビティー・モニター・アプリケーションを介してプロセスで開いているファイルの一覧を取得することができます。リストの該当するプロセスをダブルクリックして、ポップアップで[ファイルとポートを開く]タブを選択します。

ヒント:このペインのcmd + fショートカットを使用すると、コンテンツの検索とハイライト表示が可能です。

+0

これは他人にも役立ちます – olegtaranenko

2

私は、フィルタ、ディスクの選択など、非常にhandfullであるオープンアプリケーションを使用します。

あなたはそこに見つけることができます:http://whatsopen.en.softonic.com/mac

3

これは、いくつかの作品:/dev/ファイルまたは類似のため

sudo fs_usage | grep dev 

22

私は、(sudoを使って)rootとして実行していたプロセスに対して、開いているファイルを表示するのに苦労しました。元の質問にはlsofが記載されています。プロセス名やPIDを知っていれば超高速です。名前で

検索プロセス:

lsof -c processname 

は、PIDによるプロセスを検索します(。プレフィックスsudoで、必要に応じて、あなたはプロセスの所有者でない場合など)

lsof -p 123 

0

現在のプロセスを検査するクリーンでシンプルなアプローチ(すなわち Linux上/proc/self/fdに相当) ls /dev/fd/を使用することです:

例えば

$ touch "file" 
$ exec 3<>file 

$ ls /dev/fd/  

0 1 2 3 
+0

現在のプロセス以外のプロセスでこれにアクセスする方法はありますか? –

+0

@CharlesDuffy - わかりません。私は私の答えに言い返しました。 –

0

あなたが尋ねたので、「他のサポートはあり利用できる[lsofをより]?」、これを試してみてください。

は、選択し解答で参照「proc_pidinfo」C APIを使用して、コマンドラインツールを作成します。この質問:あなたが与えられたプロセスで使用されるファイルを列挙するPROC_PIDLISTFDSオプションでproc_pidinfo使用することができますHow can I programmatically get the list of open file descriptors for a given PID on OS X?

。 PROC_PIDFDVNODEPATHINFOオプションを指定して各ファイルに対してproc_pidfdinfoを使用すると、パスを取得できます。