lsof(エルエスオーエフ)コマンドは"list open files"の意味であり、多くのUnix系オペレーティングシステムで、オープン中のファイルやそのファイルをオープンしているプロセスのリストを出力するコマンドである。このオープンソースのユーティリティは、パデュー大学コンピューティングセンターの元アソシエートディレクター、ビクター・A・アベルによって開発・サポートされた。lsofはいくつかのUnix系OSで動作し、サポートされている。

例 オープン中のファイルには、すべてのプロセスがオープンしているディスク上のファイル、名前付きパイプ、ネットワークソケット、デバイスが含まれる。使用例の1つとしては、(特定できない何らかの)ファイルが使用中のであるために、ディスクがアンマウントできない時である。オープン中のファイルの一覧を確認することで(必要に応じてフィルタをかけることで)ファイルを使用しているプロセスを特定することができる。# lsof /var COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME syslogd 350 root 5w VREG 222,5 0 440818 /var/adm/messages syslogd 350 root 6w VREG 222,5 339098 6248 /var/log/syslog cron 353 root cwd VDIR 222,5 512 254550 /var -- atjobs特定のデーモンに関連づけられているポートを確認するには、次のようにする。# lsof -i -n -P | grep sendmail sendmail 31649 root 4u IPv4 521738 TCP *:25 (LISTEN)上のコマンドの実行結果より、「sendmail」が標準ポート "25" 番をlistenしていることが確認できる。

-i IPソケットをリストする。 -n ホスト名の解決を行わない。(つまり、DNSを使用しない) -P ポート名の解決を行わない。(つまり、ポート名の代わりにポート番号をリストする)

他には、lsof -Uを使用すれば、Unixソケットを一覧することもできる。

lsofの出力 lsofの出力は以下の内容を表している。

そのファイルをオープンしているプロセスのID(PID) そのプロセスのグループID(PGID)(オプション) 親プロセスのプロセスID(PPID)(オプション) プロセスが実行しているコマンド プロセスのオーナー プロセスが使用している、実行中のテキストファイルおよび共有ライブラリを含む、すべてのファイルのそれぞれに対して以下の項目を表示する 可能なら、そのファイルのファイル記述子の数 ファイルのアクセスモード ファイルのロック状態 ファイルのデバイス数 ファイルのinode数 ファイルのサイズまたはオフセット ファイルが格納されているファイルシステムの名前 ファイルのパス名の利用可能なすべてのコンポーネント ファイルのストリームコンポーネントの名前 ファイルのローカルおよびリモートのネットワークアドレス ファイルのTLIネットワーク(主にUDP)の状態 ファイルのTCPの状態、読み込みキューの長さ、および、書き込みキューの長さ ファイルのTCPウィンドウの読み込みおよび書き込みの長さ(Solarisのみ) その他のファイルまたはファイルタイプ固有の値

関連項目

fuser stat (Unix) netstat strace UNIXユーティリティの一覧 SysinternalsのProcess Explorer - Windows向けの同等コマンド (Find menu -> Find Handle or DLL)

脚注

外部リンク

lsof-lメーリングリスト sourcesのミラー

Using lsof Lsof FAQ Sam NelsonのPCPスクリプト - Solarisでの"lsof -i"の代替となるツール Glsof - lsofを元に作られた2種類のユーティリティ(クエリとファイルモニタ) Sloth - macOS用のlsofのグラフィカルインターフェイス LSOFのmanページ