Linuxでは、すべてがファイルと見なされ、ディレクトリ内に編成されます。 lsof(開いているファイルのリスト)は、開いているファイルのリストを表示します。これは主に、ファイルを開いたプロセスに関する情報を見つけるのに役立ちます。ファイルとは別に、ディレクトリ、ブロック特殊ファイル、共有ライブラリ、文字特殊ファイル、通常のパイプ、名前付きパイプ、インターネットソケット、UNIXドメインソケットなどを一覧表示できます。
このチュートリアルでは、lsofコマンドについて学習します。 Linux わかりやすい例を使用する 。
lsofコマンド
lsofコマンドは、デフォルトでほとんどのLinuxディストリビューションで使用できます。非常に一般的に、ディスクをアンマウントできない場合にlsofコマンドが使用されます。その後、lsofコマンドは、開いているファイルとその原因となっているプロセスを見つけるのに役立ちます。
構文:
lsof [options] [names]
上記の構文は、システム内のすべてのプロセスによって開かれたすべてのファイルを一覧表示します。
1。開いているすべてのファイルを一覧表示する
開いているファイルのリストをすばやく取得するには、lsofと入力します。システムのさまざまなプロセスによって開かれたすべてのファイルが一覧表示されます。
$ lsof
通常、出力は非常に長くなります。$ sudo lsof | more
、一度に1画面ずつコンテンツを表示したい場合。
2。開いているファイルをユーザー名で一覧表示する
lsofには、特定のユーザーによって開かれた特定のファイルのリストを検索するために使用できるコマンドがあります。
開いているファイルをユーザー名で一覧表示するには 次のコマンドを使用します:
$ lsof -u bobbin
複数のユーザーの場合は、次の構文を使用します。
$ lsof -u [username1] -u [username2]
または
$ lsof -u [username1], [username2]
特定のユーザー以外の開いているファイルを一覧表示するには:
$ lsof -u ^root
プロセスIDのみを一覧表示するには、-t
を使用します オプション。
$ lsof -t -u sonar
これは、特定の使用に関連するすべてのプロセスを強制終了する必要がある場合に役立ちます。
$ kill -9 lsof -t -u sonar
3。プロセスごとに開いているファイルを一覧表示する
lsofを使用して、-c
を使用して特定のプロセスによって開かれたファイルを一覧表示することもできます。 オプションの後にプロセス名が続きます。
たとえば、開いているすべてのファイルをsshで一覧表示するには:
$ lsof -c ssh
4。開いているファイルをファイル名で一覧表示する
ファイル名を引数として指定して、特定のファイルを開いたすべてのプロセスを一覧表示できます。
ファイル/var/ log / messagesによって開かれたすべてのプロセスを一覧表示するには、次のように入力します。
$ lsof /var/log/messages
5。プロセスIDで開いているファイルを一覧表示する
各ファイルにはプロセスIDが割り当てられます。 1つのプロセスで多数のファイルを開くことができます。 lsofコマンドを使用して、特定のプロセスIDの開いているすべてのファイルを一覧表示できます。
たとえば、プロセスID 2の開いているファイルを一覧表示するには、次のように入力します。
$ lsof -p 2
複数のプロセスIDの開いているファイルを一覧表示するには、次のように入力します
$ lsof -p 2,3
システムには多数のプロセスが含まれており、各プロセスには使用可能なファイルがあります。プロセスには多くの子プロセスが含まれる場合があり、このプロセスは親プロセスとも呼ばれます。
lsofコマンドは-R
で使用されます PPID(親プロセスIDentification)によって開かれたファイルのリストを取得するオプション。
$ lsof -R
出力から、5番目の列に開いているファイルのPPIDが表示されます。
特定のPIDのPPIDを見つけるには、次のように入力します。
$ lsof -p [PID] -R
6。ディレクトリ内の開いているファイルを一覧表示する
特定のディレクトリで開いているファイルを一覧表示するには、lsofコマンドを使用できます。
+d
を使用する 指定されたディレクトリで開いているファイルのリストを表示するオプションがありますが、サブディレクトリには移動しません。
次の例では、/ var/logディレクトリで開いているファイルを検索します。
$ lsof +d /var/log
+ Dオプションは、lsofにコマンドを実行して、ディレクトリの深さ全体で、開いているすべてのインスタンスと、それに含まれるすべてのファイルとディレクトリを検索します。
この場合、lsofは/ var / logとそのサブディレクトリで開いているファイルを検索します:
$ lsof +D /var/log
7。ネットワークプロトコルで開いているファイルを一覧表示する
システムは、さまざまな目的でさまざまなネットワークにリンクできます。 Linuxのすべてはファイルであり、システム内のネットワーク接続によって開かれたファイルを調べることができます。
TCPプロトコルで開いているファイルを一覧表示するには、次のコマンドを実行します。
$ lsof -i TCP
UDPプロトコルで開いているファイルを一覧表示するには、次のコマンドを実行できます。
$ sudo lsof -i UDP
8。開いているファイルをポート番号別に一覧表示する
lsofには、特定のポート番号で開いているファイルを具体的に一覧表示して、そのポートで実行されているすべてのプロセスを一覧表示するコマンドがあります。
たとえば、ポート番号443で開いているファイルを一覧表示するには
$ lsof -i :443
次のように、複数のポート番号の開いているファイルを一覧表示できます。
$ lsof -i :80,443
TCPまたはUDPの開いているファイルをポート範囲別に一覧表示することもできます。
$ lsof -i TCP:1-49151
9。開いているファイルをIPv4/IPv6別に一覧表示する
lsofには、開いているIPv4またはIPv6ネットワークファイルを一覧表示するオプションがあります。
IPv4オープンファイルを表示するには、
と入力します$ lsof -i4
次の構文を使用して、IPv6の開いているファイルを表示できます。
$ lsof -i6
10。 lsofを継続的に実行する
リピートモードを使用すると、lsofは、指定された遅延を使用して更新を継続的に繰り返すことができます。リピートモードは、「-r」または「+ r」オプションを使用して有効にできます。この場合、「+ r」は開いているファイルが見つからないときに終了し、「-r」は手動割り込みが開始されるまでリストを続けます。各遅延サイクル出力は、「========」を使用して分離されます。
構文:
$ lsof [options] -r/+r[time-interval]
例:
$ lsof -u sonar -r5
lsofコマンドヘッダー
lsof
さまざまな列があります。
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
プロセスに関連付けられているUNIXコマンドの名前は、COMMAND
に保存されています。 桁。
PID
コマンドのプロセスIDを表示します。
USER
次のプロセスに関連付けられているユーザーの名前を表示します。
TID
タスクIDを表示します。
FD
は、cwd(現在の作業ディレクトリ)、txt(テキストファイル)、mem(メモリマップトファイル)、rtd(ルートディレクトリ)などの略語を含むファイル記述子です。
TYPE
REG(通常のファイル)、DIR(ディレクトリ)、CHR(文字特殊ファイル)などの特定のファイルタイプの略語です。
DEVICE
デバイス番号が含まれています。
SIZE/OFF
ファイルサイズまたはファイルオフセットがバイト単位で含まれます。
NODE
列の値は、ローカルファイルのノード番号を表します。
NAME
ファイルのマウントポイントとファイルシステムの名前、およびインターネットアドレスを表示します。
結論
このチュートリアルでは、lsofコマンドとその使用法について例を挙げて学習しました。 lsofは、ニーズに合わせて出力をカスタマイズするためのいくつかのオプションを提供します。複数の引数を簡単かつ迅速に組み合わせて、必要な出力を取得できます。