【エルエスオーエフ】

lsof とは?

最終更新:
💡 開いているファイルやソケットを、条件で調べる

Linuxや対応するUnix系OSで、プロセスが開いているファイルなどの情報を調べるコマンド。ソケットや削除済みのファイルも対象になりますが、見える情報は権限・OS・ビルド設定などに依存します。

📌 このページのポイント
lsof:開いたファイル等を条件で調べるTCP 8080番の待ち受けlsof -nP -iTCP:8080 -sTCP:LISTEN接続全体の調査とは区別PID 1234のネットワークlsof -a -p 1234 -i-aで条件をANDにする開いたままのリンク数1未満lsof +L1削除済みのファイルなどを選ぶPID・ポートは例。実際の対象へ置き換える表示が空でも、権限やOS等の制限を確認
3つは独立した調査例です。見える情報は権限・OS・実装によって変わり、過去の全アクセスのログではありません。結果を見てプロセスを止める前に、所有者やサービスへの影響を確認します。
ひよこ ひよこ
lsofは何を調べるの?
ペンギン先生 ペンギン先生
対応するUnix系OSで、プロセスが開いているファイルなどを調べるよ。通常のファイル、ライブラリ、ソケットなどの情報が対象になる。ただし権限やOSなどの制約があり、システムのすべてのアクセスが必ず見えるわけではないんだ。
ひよこ ひよこ
ポート8080で待ち受けているプロセスは?
ペンギン先生 ペンギン先生
lsof -nP -iTCP:8080 -sTCP:LISTENのように調べられるよ。TCPの8080番に関係するソケットから、LISTEN状態を選ぶ例だね。-nPは名前の解決を抑える。lsof -i :8080だけだと、待ち受け以外の接続なども含む場合があるんだ。
ひよこ ひよこ
あるプロセスのネットワークだけを見たい
ペンギン先生 ペンギン先生
PIDが1234ならlsof -a -p 1234 -iという例になる。-aが重要で、プロセスとネットワークの条件を両方満たす対象に絞る。PIDは実際の対象へ置き換え、使う実装のマニュアルも確認しよう。
ひよこ ひよこ
削除したのに容量が空かないときにも使える?
ペンギン先生 ペンギン先生
Linuxでは最後のファイル名を削除しても、プロセスがまだ開いていると、その参照が閉じるまで残ることがある。lsof +L1はリンク数が1未満の、開いたままのファイルを選ぶ指定だよ。表示結果を確認して、保持している対象を特定しよう。
ひよこ ひよこ
見つけたPIDをすぐ止めればよい?
ペンギン先生 ペンギン先生
まず所有者、コマンド、ファイル、サービスへの影響を確認しよう。PIDだけで止めると別の作業やサービスを壊すかもしれない。結果が空のときも、警告や権限、名前空間、実装の対応を確認してから判断するんだ。
もっと詳しく知りたい人へ

lsof +Dでディレクトリを調べればよい?

たとえばlsof +D /var/logはディレクトリの下を再帰的に調べます。大きいツリーでは時間やメモリを使い、権限、シンボリックリンク、マウントを越える扱いにも条件があります。調査範囲を決め、OSと実装の仕様を確認してください。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「lsof」って出てきたら「開いているファイルやソケットを調べる道具」と思えばだいたいOK!
📖 おまけ:英語の意味
「List Open Files」 = 開いているファイルを一覧表示する
💬 lsofはlist open filesを縮めた名前です。開かれている対象の情報を調べるもので、過去のすべてのアクセスを記録する監査ログではありません。

参考資料

← 用語集にもどる