lsof は List of open files の頭字語です Linux システムで開いたままになっているファイルと、それらを開いたプロセスに関する詳細情報を表示します。これは、Victor A. Abell によって開発およびサポートされました。
この記事は、12 の実用的な例とともに、lsof コマンドの使用法を理解するのに役立ちます。
lsof を使用したすべての開いているファイルのリスト
開いているファイルのリストを表示するには、lsof を実行するだけで、コマンド、Pid、User、FD などのヘッダーを確認できる以下のような出力が得られます。
$ lsof
上記の例では、ほとんどの列とその値は一目瞭然です。それでは、実際の FD とは何かを見てみましょう。Fd はファイル記述子を指し、次のような値が含まれています:
- cwd- 現在の作業ディレクトリ
- rtd – ルート ディレクトリ
- txt – テキスト
- mem – メモリマップ ファイル
特定のユーザーのファイル リストを開く
コマンドに -u オプションを使用してユーザーを指定すると、そのユーザーが開いているすべてのファイルを一覧表示できます。
$ lsof -u root
開いているファイルをプロセス ID 別に一覧表示
特定のプロセスの pid を知っていると仮定すると、pid 値で終わるコマンドと共に -p オプションを使用して、pid に基づいて開いているファイル リストを検索できます。以下の例で指定されているように、コマンドを実行する必要があります。
# lsof -p 82
特定のポート実行プロセス
特定のポートを占有しているプロセスを確認するには、TCP/UDP のポート番号とともに -i オプションを使用してそれらを一覧表示できます。次の例では、ポート 80 を使用しているプロセスを見つけてみましょう。
# lsof -i:80
特定のネットワーク ファイル (IPv4 &IPv6) リストを表示する
ネットワーク ファイル タイプに従って開いているファイルを表示するには、-i オプションの後にタイプを指定する必要があります。
IPv4 の場合、以下のようなコマンドを実行する必要があります。
# lsof -i 4
IPv6 の場合、コマンドを実行します。
# lsof -i 6
特定のポート範囲をリッスンするプロセスを見つける
特定のポート範囲の開いているファイルの一覧を表示したい場合。特定のポート範囲を指定して、コマンドの末尾に -i を使用する必要があります。
# losf -i TCP:1-100
開いているファイルのリストから特定のユーザーを除外する
次の例に示すように、コマンドに「^」文字を使用して、出力からユーザーを除外できます。
# lsof -i -u^sanju
ディレクトリ パスごとにプロセスを一覧表示
特定のディレクトリで実行されているプロセスを見つけるには、パスの末尾に +D オプションを付けてコマンドを実行します。次の方法でコマンドを実行する必要があります。
# lsof +D /home/sanju
ネットワーク接続を表示
Listening &Established に基づいてネットワーク接続のリストを表示するには、コマンドに -i オプションを使用します。
$ lsof -i
特定のプロセスを強制終了
プロセスを閉じても一部のプロセスがシャットダウンしない場合や、特定のプログラムを実行するポートが不明なプロセスによって占有される場合があります。プロセスを強制的にシャットダウンするには、実行中のプロセスを簡単に一覧表示できる lsof コマンドを使用できます。したがって、次の方法でコマンドを実行する必要があります。
# kill -9 $(lsof -t -i:8080)
FD (ファイル記述子) に基づいて開いているファイルを一覧表示
FD タイプに基づいて開いているファイルをフィルタリングできます。以下の例に示すように、FD タイプとともに -d オプションを使用する必要があります。
# lsof -d rtd
プロセス名に基づいて開いているファイルを一覧表示する
コマンドで -c オプションを使用すると、プロセス名に従ってファイルを一覧表示できます。次の方法でコマンドを実行します
# lsof -c nginx
結論
この記事を読むために時間を割いていただき、ありがとうございます。 lsof コマンドの使用方法についての知識が得られたことを願っています。これらは、アプリケーションを展開する際に役立つと思われるものです。