lsof Linuxのコマンドは、プロセスによって開かれたファイルに関する情報を出力に表示します。この記事では、わかりやすい15の例を使用してLinuxlsofツールについて説明します。このチュートリアルで言及されているすべての例はUbuntu20.04LTSでテストされていますが、Debian、Fedora、CentOSなどの他のLinuxディストリビューションでも機能することに注意してください。
lsofコマンドについて
特定のプロセス(またはすべてのプロセス)によって開かれたファイルの名前をすばやく確認したい場合は、lsofコマンドを使用してそれを行うことができます。開いているファイルは、通常のファイルまたはディレクトリ、ライブラリ、特殊ファイルまたはブロックデバイス、文字特殊ファイル、実行中のテキスト参照、さらにはストリームまたはネットワークファイルです。ポート番号ごとにプロセスを一覧表示することもできます。 rootユーザーとしてログインしていない場合は、コマンドの前に「sudo」を追加する必要がある場合があります。
Linuxlsofコマンドをインストールする
ほとんどのLinuxディストリビューションには、lsofがプリインストールされています。システムにまだインストールされていない場合は、次のコマンドを使用します。
UbuntuとDebianの場合:
$ sudo apt install lsof
Ond CentOSとFedora:
$ dnf install lsof
1。開いているすべてのファイルを一覧表示する方法
開いているすべてのファイルを一覧表示するには、引数なしでlsofコマンドを実行します。
lsof
たとえば、上記のコマンドが私のシステムで生成した出力の一部のスクリーングラブは次のとおりです。
最初の列はプロセスを表し、最後の列にはファイル名が含まれます。すべての列の詳細については、コマンドのマニュアルページにアクセスしてください。
2。特定のユーザーに属するプロセスによって開かれたファイルを一覧表示する方法
このツールを使用すると、特定のユーザーに属するプロセスによって開かれたファイルを一覧表示することもできます。この機能には、 -uを使用してアクセスできます。 コマンドラインオプション。
lsof-u[ユーザー名]
例:
lsof-u管理者
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 apache
5。プロセスに固有のファイルを一覧表示する方法
このツールでは、プロセスID(PID)番号に基づいて開いているファイルを表示することもできます。これは、 -pを使用して実行できます。 コマンドラインオプション。
lsof -p [PID]
例:
lsof -p 856
次に進むと、 ^ を追加して、出力から特定のPIDを除外することもできます。 それらの前の記号。特定のPIDを除外するには、次のコマンドを実行できます。
lsof -p [^PID]
例:
lsof -p ^ 1
上のスクリーンショットでわかるように、ID1のプロセスはリストから除外されています。
6。特定のファイルを開いたプロセスのIDを一覧表示する方法
このツールを使用すると、特定のファイルを開いたプロセスのIDを一覧表示できます。これは、 -tを使用して実行できます。 コマンドラインオプション。
$ lsof -t [file-name]
例:
$ 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:53
10。ポート範囲に基づいて開いているファイルを一覧表示する方法
このユーティリティでは、特定のポートまたはポート範囲に基づいて開いているファイルを一覧表示することもできます。たとえば、ポート1〜1024の開いているファイルを表示するには、次のコマンドを使用します。
$ lsof -i:1-1024
11。接続のタイプ(TCPまたはUDP)に基づいて開いているファイルを一覧表示する方法
このツールを使用すると、接続のタイプに基づいてファイルを一覧表示できます。たとえば、UDP固有のファイルの場合は、次のコマンドを使用します。
$ lsof -i udp
同様に、lsofにTCP固有のファイルを表示させることができます。
12。 lsofリストを作成する方法プロセスの親PID
lsofにParentProcessIDentification(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 多数のオプションが用意されていますが、ここで説明したもので十分に始めることができます。これらの練習が終わったら、ツールのマニュアルページにアクセスして詳細を確認してください。ああ、疑問や質問がある場合は、下にコメントを記入してください。