lsof
別名: list open files
結論
lsofは、すべてのプロセスが開いているファイル、フォルダ、ネットワーク接続を一覧表示するターミナルのコマンドです。Macでは、どのプロセスがファイルを使っているか、何がディスクの取り出しを妨げているか、何がポートで待ち受けているかがわかります。
lsofはlist open files(開いているファイルの一覧)の略で、macOSに標準で入っています。何も付けずに実行すると、開いているファイル1つにつき1行、何千行も出力されるので、たいていはファイル、フォルダ、ディスク、ポートを指定して一覧を絞り込みます。
sudoなしでは、自分のプロセスだけが表示されます。sudoを付けると、Spotlightなど、macOS自身のプロセスも含まれます。
覚えておきたいlsofのコマンド
どれも、パス、ポート、プロセスを指定して一覧を絞り込みます。
lsof /path/to/file:このファイルを開いているものsudo lsof /Volumes/NAME:ディスク上で開かれているすべてlsof +D /path/to/folder:フォルダ内で開かれているすべてlsof -nP -iTCP:3000 -sTCP:LISTEN:ポート3000で待ち受けているものlsof -p <PID>:1つのプロセスが開いているすべてのファイル
出力の読み方
COMMANDは9文字までに切り詰めたプロセス名、PIDはその番号、USERは実行しているユーザです。FDはファイルの開き方を示します。数字にrが付けば読み込み、wなら書き込み、uなら両方で、cwdはプロセスが作業しているフォルダ、txtはプログラムと読み込んだライブラリです。NAMEはパス、またはネットワークアドレスです。
lsofが遅い、または警告を出す理由
+Dで大きなフォルダの中を調べると、その下のすべてのファイルを読み込むので、数分かかることがあります。sudoなしでは、読み取れないファイルについての警告が出るのは普通です。
よくある質問
lsofは何の略ですか?
List open files(開いているファイルの一覧)の略です。
lsofはMacにインストールされていますか?
はい。macOSに標準で入っていて、場所は/usr/sbin/lsofです。
lsofで何も表示されないのはなぜですか?
自分のプロセスでそのファイルを開いているものがないからです。macOSやほかのユーザが実行しているプロセスも含めるには、sudoを付けて実行します。
関連項目
詳しい手順: ディスクを取り出せない。
アクティビティモニタより優れたものをお探しなら、Mac向けアクティビティモニタの代替アプリのおすすめをご覧ください。用語集のすべての用語も見られます。