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

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

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

記事の文字数:2,732 / 総アクセス数:250 views

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

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ユーザにお勧めの本

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

難易度
実用性
習得度

アウトプット重視で記憶に定着しやすい。反復練習でLinux操作が自由自在になります。

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

難易度
実用性
読みやすさ


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

Linuxユーザにお勧めの本

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

人気記事


記事を評価

Thanks!
目次
Scroll to Top