Mac OS Xでファイルを使用しているプロセスを確認する


93

ファイルを追跡し、どのプロセスがそのファイルにアクセスしているかを確認できるようにしたいと思います。それは可能ですか?アクティビティモニターで開いているプロセスのリストを表示できることは知っていますが、それをすぐに確認できるようになっていると思います。これは、フレームワークを使用しているためで、デバッグバージョンの代わりにフレームワークのシステムバージョンが使用されていると思います。どのプロセスがそれに影響を与えているのかを知りたいのです。




注:^^^は非常に関連があり、同様の質問です-FYI ;-)
ブラッドパークス

回答:


90

lsof 開いているファイルを一覧表示しますが、一時的な操作には少し扱いに​​くい場合があります(たとえば、lsofの実行時にファイルが開いていない場合、表示されません)。

あなたの最善の策は fernLightningのfseventer.appだと思います。「nagware」であり、リアルタイムでfsevents APIを(グラフィックで)監視できます。


39
lsof | grep myfilename私のために働いた。ゴミ箱にPDFファイルがあり、システムが使用中であると主張しています。奇妙なlsofことに、PreviewそれPreviewはによって使用されているが実行されていないように見えます(たとえば、実行中のアプリでコマンドタブを押したとき)が、実行中であるActivity Monitorことを示しています。愚かなプレビュー。
デイブサグ2012

これは一時ファイル(つまり、開いたままではなく、保存中にのみ変更されるファイル)に最適です。
ジェロニモコロンIII

今日も同様の問題がありましたが、ゴミ箱のファイルがゾンビプレビュープロセスによって保持されていました。プレビューを開いてもう一度終了すると、問題は解決しました。プレビューは終了しましたが、定期的にファイルを保持していると思います。私はよくプレビューでEvernoteから画像を開いてトリミングしますが、ほとんどの場合-ほとんどの場合-プレビューを終了した後でも、Evernoteは画像がまだ別のアプリケーションで開いていると警告します。
Vihung 2014

これは私が今抱えている問題に似ています-それでも解決策はありません。Chromeを使用してファイルをダウンロードし、Finderを使用して別のフォルダに移動しました。灰色で表示されたので、lsofを使用して、ファイルを開いている人を見つけました:Finder。Finderを強制終了しました(自動的に再起動します)。それはうまくいきませんでした。私はラップトップを閉じてみたところ、すべてがスリープ状態になると考えられ、うまくいけば問題が解決されました。それもうまくいきませんでした。lsofは原因としてFinderを表示し続け、UIで灰色を表示し続けます。
Victor Engel 14

1
興味深いことに、ファインダーウィンドウを閉じることで問題が解決したようです。ただし、新しいファインダーウィンドウを開いて同じフォルダーに移動すると、問題は解決しませんでした。問題のあるファイルをゴミ箱にドラッグし(ファイルを開いているプログラムに悪影響がある可能性があることを警告する)、ファイルを再コピーすることで問題を解決しました。
Victor Engel 14

94

それは簡単です: sudo fs_usage | grep [path_to_file]


10
これは断然最良の答えです。
NuSkooler 2013年

fs_usageはrootとして実行する必要があります...これは最善の解決策ではありません。
bontoJR 2013年

これはfsイベントを示していますか?プロセスがファイルを開いているが何も実行していない場合、ここには何も表示されません。または、少なくとも私の経験のようでした。私のmusiclibraryデータベースファイルにアクセスする3つのプロセスsudo fs_usage | grep musiclibraryだけをsudo lsof | grep musiclibrary示しました。
gman

43

しかし、私は2分間グーグルで過ごし、ここにあなたの答えを見つけまし

$ lsof | grep [何でも]

[whatever]は、探しているファイル名に置き換えます。これで、ゴミ箱に入れようとしているファイルを必死に保持しているプログラムを確認できます。そのプログラムを終了すると、ゴミ箱は空になります。


1
それに関する問題は、私はlsofを本当に速く入力しなければならないということです。それは一時的なものにすぎないかもしれません
JPC

13
lsof -rはlsofをリピートモードにします
stoutyhk

ファイルがリリースされた場合に備えて、grepを実行することは理にかなっています。
レイハンター

16

より速い方法は:

$ lsof [path_to_file]

このソリューションはrootパスワードを必要とせず、次の明確な結果を返します。

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
Finder     497  JR7   21r   REG    1,2   246223 33241712 image.jpg
QuickLook 1007  JR7  txt    REG    1,2   246223 33241712 image.jpg

15

別のオプションはナマケモノです。これは、LSOF向けの無料のオープンソースGUIであり、他の人が言及しています。


1
これは共有してくれて本当に素晴らしいツールです。私が見失ったプロセスを見つけるのに最適でした。
RayB

2
移植性が高いため、コマンドラインソリューションを好む傾向がありますが、これは非常に優れたツールであることを認めざるを得ません。提案をありがとう。
フォームの
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.