【Linux】lsofコマンドの見方・活用ガイド

【Linux】lsofコマンドの見方・活用ガイド

Amazonのアソシエイトとして、IT技術ライフは適格販売により収入を得ています。

記事の文字数:3085

本記事では、Linuxの「lsofコマンド」の使い方と出力結果の見方を、初心者にもわかりやすく解説します。基本的な構文から主要オプション(-i、-u、-cなど)の活用法、出力フィールド(COMMAND・PID・FD・TYPE・NAME)の意味、そして削除済みファイルの特定方法まで網羅的に紹介。


投稿履歴


Linuxユーザにお勧めの本


ITエンジニアにお勧めの本

Linux環境で「どのプロセスがどのファイルを開いているか」を確認するための実用的なツールのひとつが lsof(List Open Files) です。ネットワークポートの使用状況確認、削除済みファイルの調査、特定プロセスのファイルハンドル解析など、トラブルシューティングや運用保守に欠かせない存在です。

本記事では、lsofの見方・基本操作・応用テクニックを体系的に解説します。初心者にもわかりやすい例と、現場で使える応用Tipsを交えて紹介します。

記事のポイント

  • lsofは「開いているファイル」を一覧表示するLinuxの基本コマンド。
  • ファイル・プロセス・ポート・ソケットの状態を一括確認できる。
  • -i(ネットワーク)、-u(ユーザー)、-c(コマンド名)などのオプションが重要。
  • 出力のTYPENAMEを理解するとトラブル原因の特定が容易。
  • 削除済みファイルの検出や使用中ポートの確認にも活用可能。
  • システムの見える化とトラブル解決の両面で非常に有効。

lsofは開いているファイルを一覧表示するコマンド

lsofは、「システム上で現在開いているすべてのファイル」を一覧表示するLinux環境で広く使用されるユーティリティです。Linuxでは 「すべてはファイル」 という哲学のもと、通常のファイルだけでなく、ディレクトリ・デバイス・ネットワークソケット・パイプなど、あらゆるリソースがファイルとして扱われます。そのため、lsofを使うことで、ファイル・プロセス・ネットワーク通信の関連性を一目で把握できます。

lsofでファイル・プロセス・ネットワーク情報を確認

種類説明
ファイル情報開かれているファイルのパス、アクセスモード、サイズなど
プロセス情報PID、実行ユーザー、コマンド名、権限など
ネットワーク情報TCP/UDPポート、LISTEN/ESTABLISHED 状態、通信相手など

これにより、「どのプロセスがどのポートを使っているか」「どのファイルが削除済みだがプロセスが保持しているか」などを簡単に特定できます。

lsofの実行権限について

lsofはシステム全体のプロセス情報を取得できるコマンドのため、 すべてのプロセスを参照するには管理者権限(sudo) が必要です。一般ユーザー権限で実行した場合は、 自分が所有するプロセスのみ表示 されます。例えば、sudo lsofとすることで、全システムの開いているファイルやポートを確認できます。

lsofの基本構文と主要なオプション

lsofの基本構文

Terminal window
lsof [オプション] [条件]

lsofでよく使われるオプション一覧

オプション内容使用例
-iネットワーク接続を特定lsof -i:80(ポート80使用確認)
-cコマンド名でフィルタlsof -c sshd(sshd関連プロセス)
-u指定ユーザーのプロセスを表示lsof -u www-data
-Pポート番号を数値表示名前解決を防止し高速化
-nIPアドレスを数値表示DNS解決を抑制して速度向上
-aAND条件で絞り込みlsof -a -u root -iTCP
+L1リンク数1未満、つまり削除済みのオープンファイルを選択するlsof +L1

lsofの出力情報の見方

lsofを単体で実行すると、以下のような出力が得られます。

Terminal window
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1234 root 3u IPv4 12345 0t0 TCP *:80 (LISTEN)

各フィールドの意味は下記の通りです。

フィールド説明
COMMAND実行中のプログラム名
PIDプロセスID(識別番号)
USER実行ユーザー名
FDファイルディスクリプタ番号とモード(例:3u は読み書きモード)
TYPEファイル種別(REG, DIR, IPv4など)
DEVICEデバイス番号またはファイルシステム識別子
SIZE/OFFファイルサイズまたはオフセット
NODEi-node番号(ファイルの内部識別子)
NAMEファイルパスまたはネットワーク情報

TYPEフィールドの詳細

TYPE意味用途例
REG通常ファイル/var/log/syslogなど
DIRディレクトリ/etcなど
CHR/BLKキャラクタ・ブロックデバイス/dev/null, /dev/sdaなど
IPv4 / IPv6ネットワークソケット通信ポートを使用する場合
PIPEプロセス間通信シェルパイプなど
DEL削除済みファイルプロセスが保持中の一時ファイル

NAME列の末尾に (LISTEN) が付いている場合は、そのポートが待ち受け状態であることを示します。(ESTABLISHED) は通信が確立中であることを意味します。 削除済みファイルの検出方法については+L1オプションまたはNAME列のdeletedからも確認できます。

現場で使える!lsofの活用例

lsofでネットワーク関連の確認~特定ポートの使用プロセスを特定~

Terminal window
lsof -i:443

→ HTTPSポートを使用中のプロセスを確認。

lsofでネットワーク関連の確認~複数ポートを一括チェック~

Terminal window
lsof -i:22 -i:80 -i:443 -i:8080

→ Web・SSH系サービスの状態をまとめて確認可能。

lsofでネットワーク関連の確認~TCP/UDP別に確認~

Terminal window
lsof -iTCP
lsof -iUDP

→ プロトコル別に整理された接続一覧を取得できます。

lsofでネットワーク関連の確認~特定IPアドレス宛の通信を確認~

Terminal window
lsof -i@192.168.1.100

→ 指定IPと通信しているプロセスを抽出。

lsofでネットワーク関連の確認~LISTEN状態のみを抽出~

Terminal window
lsof -i -sTCP:LISTEN

→ サーバーが現在待ち受けているポートのみを一覧表示。

lsofでファイル・プロセスの確認~特定ファイルを開いているプロセスを確認~

Terminal window
lsof /var/log/messages

→ ログファイルを保持しているプロセスを特定し、削除不能トラブルを解決可能。

lsofでファイル・プロセスの確認~プロセス名からファイルを検索~

Terminal window
lsof -c nginx

→ nginx関連のすべてのファイルハンドルを一覧化。

lsofでファイル・プロセスの確認~特定ユーザーの利用ファイルを確認~

Terminal window
lsof -u www-data

→ Webアプリがどのファイルにアクセスしているか把握できます。

lsofでファイル・プロセスの確認~複合条件(AND条件)の利用~

Terminal window
lsof -a -u root -i:22

→ 「rootユーザー」かつ「SSHポート22を使用している」プロセスのみ表示。

実務ヒント: WebサーバやDBサーバで複数条件を組み合わせると、特定ユーザー・特定通信に限定してトラブルを再現しやすくなります。

まとめ:lsofを使いこなすために

  • lsofは「開いているファイル」を一覧化するLinuxの基幹コマンド。
  • -i, -u, -c, -a, -nP などを組み合わせて効率的な調査が可能。
  • 出力フィールドを正しく理解すれば、ネットワーク・ファイルシステム・プロセスの全容が把握できる。
  • 削除済みファイルやメモリリーク、ポート競合などのトラブルを可視化できる。

lsofは「システムの聴診器」。サーバの状態を可視化し、原因追及やリソース監視を効率化するために、日常的に活用していきましょう。


Linuxユーザにお勧めの本


ITエンジニアにお勧めの本


以上で本記事の解説を終わります。
よいITライフを!
Scroll to Top