Linux, コマンド · 1 min read · Sep 16, 2025
初心者のためのLinux lsofコマンドチュートリアル (15の例)

Linuxのlsofコマンドは、プロセスによって開かれているファイルに関する情報を出力します。この記事では、15のわかりやすい例を使ってLinux lsofツールについて説明します。このチュートリアルで紹介するすべての例は、Ubuntu 22.04 LTSでテストされていますが、Debian、Fedora、CentOSなどの他のLinuxディストリビューションでも動作します。
lsofコマンドについて
特定のプロセス(またはすべてのプロセス)によって開かれているファイルの名前をすぐに確認したい場合、lsofコマンドを使用できます。開かれたファイルは、通常のファイルやディレクトリ、ライブラリ、特別なファイルやブロックデバイス、キャラクタ特殊ファイル、実行中のテキスト参照、ストリームやネットワークファイルである可能性があります。また、ポート番号でプロセスをリストすることもできます。rootユーザーとしてログインしていない場合は、コマンドの前に「sudo」を付ける必要があるかもしれません。
Linux lsofコマンドのインストール
ほとんどのLinuxディストリビューションには、lsofがプリインストールされています。システムにまだインストールされていない場合は、次のコマンドを使用してlsofをインストールしてください。
UbuntuおよびDebianの場合:
$ sudo apt install lsofCentOSおよびFedoraの場合:
$ dnf install lsof1. すべてのオープンファイルをリストする方法
すべてのオープンファイルをリストするには、引数なしでlsofコマンドを実行します:
lsof例えば、以下は私のシステムで上記のコマンドが生成した出力の一部のスクリーングラブです:

最初の列はプロセスを表し、最後の列にはファイル名が含まれています。すべての列の詳細については、コマンドのmanページを参照してください。
2. 特定のユーザーに属するプロセスによって開かれたファイルをリストする方法
このツールは、特定のユーザーに属するプロセスによって開かれたファイルをリストすることもできます。この機能は、-uコマンドラインオプションを使用することでアクセスできます。
lsof -u [ユーザー名]
例えば:
lsof -u administrator

3. インターネットアドレスに基づいてファイルをリストする方法
このツールは、インターネットアドレスに基づいてファイルをリストすることができます。これは、-iコマンドラインオプションを使用して行うことができます。例えば、IPv4とIPv6のファイルを別々に表示することができます。IPv4の場合、次のコマンドを実行します:
lsof -i 4例えば:

同様に、IPv6の場合は次のコマンドを実行します:
lsof -i 6例えば: lsof -i 6

4. アプリケーション名によるすべてのファイルをリストする方法
-cコマンドラインオプションを使用すると、プログラム名によって開かれたすべてのファイルを取得できます。
$ lsof -c apache完全なプログラム名を使用する必要はなく、「apache」という単語で始まるすべてのプログラムが表示されます。したがって、私たちの場合、’apache2’アプリケーションのすべてのプロセスがリストされます。

-cオプションは基本的に次の2つのコマンドのショートカットです:
$ lsof | grep apache5. 特定のプロセスに特有のファイルをリストする方法
このツールは、プロセス識別(PID)番号に基づいて開かれたファイルを表示することもできます。これは、-pコマンドラインオプションを使用して行うことができます。
lsof -p [PID]例えば:
lsof -p 856
次に、出力から特定のPIDを除外することもできます。除外する特定のPIDを指定するには、^記号を前に付けてコマンドを実行します:
lsof -p [^PID]例えば: lsof -p ^1

上記のスクリーンショットのように、ID 1のプロセスはリストから除外されています。
6. 特定のファイルを開いているプロセスのIDをリストする方法
このツールは、特定のファイルを開いているプロセスのIDをリストすることができます。これは、-tコマンドラインオプションを使用して行うことができます。
$ lsof -t [ファイル名]例えば:
$ lsof -t /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0
7. ディレクトリ内のすべてのオープンファイルをリストする方法
必要に応じて、lsofにディレクトリのすべてのオープンインスタンス(それに含まれるすべてのファイルやディレクトリを含む)を検索させることもできます。この機能は、+Dコマンドラインオプションを使用してアクセスできます。
$ lsof +D [ディレクトリパス]
例えば:
$ lsof +D /usr/lib/locale

8. すべてのインターネットおよびx.25(HP-UX)ネットワークファイルをリストする方法
これは、前述の-iコマンドラインオプションを使用することで可能です。ただし、引数なしで使用する必要があります。
$ lsof -i

9. どのプログラムがポートを使用しているかを調べる方法
コマンドの-iスイッチを使用すると、特定のポート番号をリッスンしているプロセスやアプリケーションを見つけることができます。以下の例では、ポート80を使用しているプログラムを確認しました。
$ lsof -i :80ポート番号の代わりに、/etc/servicesファイルにリストされているサービス名を使用できます。HTTPS(443)ポートでリッスンしているアプリを確認する例:
$ lsof -i :https結果:

上記の例は、TCPとUDPの両方を確認します。TCPまたはUDPのみを確認したい場合は、「tcp」または「udp」という単語を前に付けてください。例えば、ポート25 TCPを使用しているアプリケーションは:
$ lsof -i tcp:25または、UDPポート53を使用しているアプリは:
$ lsof -i udp:5310. ポート範囲に基づいてオープンファイルをリストする方法
このユーティリティは、特定のポートまたはポート範囲に基づいてオープンファイルをリストすることもできます。例えば、ポート1-1024のオープンファイルを表示するには、次のコマンドを使用します:
$ lsof -i :1-1024

11. 接続の種類(TCPまたはUDP)に基づいてオープンファイルをリストする方法
このツールは、接続の種類に基づいてファイルをリストすることができます。例えば、UDP特有のファイルの場合、次のコマンドを使用します:
$ lsof -i udp

同様に、lsofにTCP特有のファイルを表示させることもできます。
12. lsofにプロセスの親PIDをリストさせる方法
lsofに出力に親プロセスID(PPID)番号をリストさせるオプションもあります。問題のオプションは-Rです。
$ lsof -R特定のPIDのPPID情報を取得するには、次のコマンドを実行できます:
$ lsof -p [PID] -R例えば:
$ lsof -p 3 -R
13. ユーザーによるネットワークアクティビティを見つける方法
-iおよび-uコマンドラインオプションの組み合わせを使用することで、Linuxユーザーのすべてのネットワーク接続を検索できます。これは、ハッキングされた可能性のあるシステムを調査する際に役立ちます。この例では、ユーザーwww-dataのすべてのネットワークアクティビティを確認します:
$ lsof -a -i -u www-data
14. すべてのメモリマップファイルをリストする方法
このコマンドは、Linux上のすべてのメモリマップファイルをリストします。
$ lsof -d mem
15. すべてのNFSファイルをリストする方法
-Nオプションは、すべてのNFS(ネットワークファイルシステム)ファイルのリストを表示します。
$lsof -N結論
lsofは多くのオプションを提供していますが、ここで説明したものは、始めるのに十分なはずです。これらの練習が終わったら、ツールのmanページにアクセスしてさらに学んでください。ああ、疑問や質問がある場合は、下にコメントを残してください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。