lsof(List Open Files)は、Linux障害対応において
- 原因特定のスピード
- 再現性のある調査
- 「なぜ起きているか」の説明力
を一気に引き上げてくれる必須コマンドです。
本記事では、マニュアルには載らない実務で本当に使うlsofの使い方を、 障害シナリオ別に整理します。
目次
lsofとは何をするコマンドか
lsof は「プロセスがどのファイル(ソケット含む)を掴んでいるか」を一覧表示します。
Linuxでは、
- ファイル
- ディレクトリ
- デバイス
- ソケット(TCP/UDP)
すべてが「ファイル」として扱われます。
つまり lsof は、
「何が、何を、なぜ離さないのか」
を可視化するコマンドです。
まず覚えるべき基本形
すべて表示(基本)
lsof
※ 出力量が膨大なため、実務ではほぼ使いません。
特定ユーザーのプロセス
lsof -u apache
特定PID
lsof -p 1234
【最重要】削除したのに空かないディスク調査
df と du が一致しない場合、真っ先に確認すべきです。
削除済みだが解放されていないファイル
lsof | grep deleted
または推奨:
lsof +L1
意味:
- リンク数が 0
- = ファイルは削除済み
- = しかしプロセスが保持中
dfに反映され続ける原因です。
対処方法
systemctl restart <service>
もしくは:
kill <PID>
ポート競合・LISTEN調査
特定ポートを使用しているプロセス
lsof -i :80
LISTEN状態のみ表示
lsof -iTCP -sTCP:LISTEN
「ポートが使われていてサービスが起動しない」時の定番です。
プロトコル指定
lsof -iTCP
lsof -iUDP
ネットワークトラブル調査
特定IPとの通信状況
lsof -i @192.168.1.10
特定ポート+IP
lsof -i @192.168.1.10:443
アプリケーション視点で通信を追えるのが強みです。
NFS・マウント解除できない問題
「umountできない」「device is busy」と出る場合:
lsof +D /mnt/nfs
どのプロセスが掴んでいるか一発で分かります。
ディレクトリ配下を掴んでいるプロセス
特定ディレクトリ配下
lsof +D /var/log
※ 大規模ディレクトリでは負荷が高いので注意
よく使う実務オプションまとめ
| オプション | 意味 |
|---|---|
| -p | PID指定 |
| -u | ユーザー指定 |
| -i | ネットワーク関連 |
| +L1 | 削除済みファイル検出 |
| +D | ディレクトリ配下検索 |
実務での鉄板調査フロー
- df / du で異常検知
- lsof +L1 で削除済み確認
- lsof -i でポート確認
- 必要に応じてPID・ユーザー絞り込み
この流れを覚えておけば、ディスク・NW系障害の8割は即解決できます。
よくある失敗
- lsof を実行せず再起動
- 原因不明のまま rm -rf
- プロセスを理解せず kill -9
「なぜ掴んでいるのか」を確認することが重要です。
まとめ
lsof は単なる調査コマンドではなく、
「Linuxが今何に困っているかを教えてくれる通訳」
です。
障害対応が速い人ほど、
- lsof +L1
- lsof -i
を反射的に叩いています。
ぜひ本記事を、現場で即使えるlsof辞書として活用してください。
あわせて読みたい


df で空き容量があるのに書き込みエラーになる原因(inode不足など)
Linux でファイルを書き込もうとした際に、 No space left on device というエラーが出ることがあります。 しかし df -h を実行すると、空き容量がまだ十分にあるように…
あわせて読みたい


dfとduの結果が一致しない理由|Linuxディスク使用量のズレを完全解説
Linux運用で必ずと言っていいほど遭遇するのが、df と du の結果が合わない問題です。 df -h du -sh / 「dfでは空きがないのに、duではそんなに使っていない」 この状態…
あわせて読みたい


inode枯渇による障害の見抜き方と解消手順
Linuxサーバーで「ディスク容量は空いているのにファイルが作れない」 という障害が発生した場合、真っ先に疑うべきなのがinode枯渇です。 本記事では、inode枯渇障害を…
