GNU/Linux >> Linux の 問題 >  >> Linux

Linux の lsof コマンドと例

はじめに

lsof コマンドは LiSt Open Files の略です 開いているファイルと、それらを使用するプロセスが表示されます。 Linux はデバイスやディレクトリなどのすべてのオブジェクトをファイルと見なすため、未確認の開いているファイルはユーザーによる変更を防ぎます。

さらに、ファイルの数が非常に多いため、悪意のあるプロセスを見つけるのが難しくなります。 lsof コマンドは、これらのプロセスを特定するのに役立つため、それらを終了できます。

この記事では、 Linux の lsof コマンドと例。

前提条件

  • ターミナルへのアクセス
  • Sudo グループの権限
  • 一部のコマンドのルート権限

lsof コマンド構文

lsof コマンド構文は次のとおりです:

lsof [options]

注: ほとんどのコマンドでは、lsof を実行します sudo 「許可が拒否されました」というエラーを回避します。

lsof コマンド オプション

lsof コマンドには多くのオプションがあります。以下の表には、最も頻繁に使用される引数が含まれています:

オプション 説明
lsof 開いているすべてのファイルを一覧表示します。
-b カーネル ブロックを抑制します。
/ [file system] / 特定のファイル システムで開いているファイルを表示します。
/dev/tty* 端末に関連付けられたファイルを表示します。
-u [username] ユーザーが開いたすべてのファイルを印刷します。
-u ^[username] 特定のユーザーを除く全員が開いたすべてのファイルを印刷します。
-c [process] 特定のプロセスによってアクセスされるすべてのファイルを一覧表示します。
-p [process ID] 特定のプロセス ID に関連付けられたすべての開いているファイルを表示します。
-p ^[process ID] 他のすべての PID によって開かれたファイルを表示します。
-R 親プロセス ID を一覧表示します。
+D [directory path] ディレクトリ内の開いているすべてのファイルを出力します。
-i ネットワーク接続によってアクセスされるすべてのファイルを表示します。
-i [IP version number] IP に基づいてファイルをフィルタリングします。
- i [udp or tcp] 接続タイプ (TCP または UDP) に基づいて、開いているファイルをフィルタリングします。
-i :[port number] 特定のポートで実行されているプロセスを検索します。
-i :[port range] 特定のポート範囲で実行されているプロセスを検索します。
-t [file name] 特定のファイルにアクセスしたプロセスの ID を一覧表示します。
# kill -9 'lsof -t -u [user] ' すべてのユーザー プロセスを強制終了します。
-d mem すべてのメモリ マップ ファイルを表示します。
[path] | grep deleted ロックされた削除済みファイルを印刷します。
man man ページを開きます。

lsof コマンドの例

lsof ユーザーがシステムおよびネットワーク管理アクティビティを管理できるように、さまざまな引数が組み込まれています。以下は、最も一般的な lsof の概要です。 ユースケース。

すべてのファイルを一覧表示

オプションなしで実行すると、lsof 任意のプロセスによって開かれたすべてのファイルを一覧表示します:

sudo lsof

lsof コマンドは多くの詳細を出力します。したがって、常に lsof をパイプします。 less 出力を一度に 1 ページずつ表示します。

sudo lsof | less

リストの一番下に移動するには、Enter を押します または 下矢印 . Q でリストを終了します .

lsof 出力は異なる列で構成されます。ただし、すべての列がすべての種類のファイルに適用されるわけではありません。ヘッダーは次のようになります:

lsof のデフォルトの列 出力は次のとおりです:

  • コマンド - ファイルを開いたプロセスに関連付けられたコマンドを参照します。
  • PID - ファイルを実行しているプロセスのプロセス識別番号。
  • TID - 各プロセスのタスク識別番号を表します。タスクではなくプロセスがファイルを開いた場合は空白です。
  • TASKCMD - 最初の列のコマンド名を参照します。ただし、TASKCMD タスクがそのコマンド名を変更すると、異なる場合があります。
  • ユーザー - プロセスを実行しているユーザーの名前。列にはユーザー ID または名前が含まれます。
  • FD - プロセスがファイルに関連付けるために使用するファイル記述子です。
  • タイプ - ファイルの種類とその識別番号を表示します。
  • デバイス - ファイルに関連するデバイス番号を出力します。
  • サイズ/オフ - 実行時に取得された値またはファイルを表します (サイズまたはオフセット)。
  • NODE - ディレクトリ/親ディレクトリのローカル ファイルのノード番号または i ノード番号。
  • 名前 - ファイルへのパスまたはリンクを表示します。

カーネル ブロックを隠す

デフォルトの lsof 出力には、カーネルによって開かれたファイルも含まれます。カーネル ブロックを抑制するには、lsof を実行します。 -b フラグ:

sudo lsof -b

特定のファイルシステムのファイルを表示

lsof を使用 特定のファイル システムで開いているファイルを表示するコマンド:

sudo lsof / [file system] /

たとえば、sys で開いているすべてのファイルを表示するには ディレクトリ、実行:

sudo lsof / sys/

端末ファイルの印刷

dev をターゲットにして、ターミナルに接続されているすべての開いているファイルを一覧表示します lsof のディレクトリ :

lsof /dev/tty*

ユーザーがアクセスしたすべてのファイルを表示

lsof を使用 -u 特定のユーザーが開いたファイルを表示するフラグ:

sudo lsof -u [username]

例:

lsof -u saraz

このコマンドは、saraz によって開かれたファイルを一覧表示します .

特定のユーザーを除くすべてのユーザーが開いているすべてのファイルを印刷するには、次のコマンドを実行します:

sudo lsof -u ^[username]

例:

lsof -u ^saraz

出力には、saraz 以外のユーザーによって制御されているファイルが表示されます .

プロセスが使用するファイルを表示

-c フラグは、プロセスによって使用されるすべてのファイルを開きます:

sudo lsof -c [process]

たとえば、wpa_suppl によって開かれたファイルを一覧表示するには プロセス、実行:

sudo lsof -c wpa_suppl

別のオプションは、プログラム名の一部のみを使用することです:

sudo lsof -c wpa

lsof wpa という用語で始まるすべてのプログラムを返します 、これには wpa_suppl が含まれます .

さらに、-c オプションは lsof をパイプするのと同じ出力を与えます grep で :

sudo lsof | grep wpa_suppl

特定の PID によって開かれたファイルを印刷

-p を使用します プロセス ID 番号 (PID) で特定のファイルをフィルタリングするオプション。たとえば、以下の出力は PID 635 のすべてのファイルを示しています。

sudo lsof -p 635

一方、キャレット ^ を追加します 他のすべてのプロセスによって開かれたファイルを印刷する記号:

sudo lsof -p ^635

さらに、lsof を組み合わせて -R フラグは、親プロセス識別番号 (PPID) を出力に追加します。

特定の PID の PPID 情報を取得するには、次を実行します:

sudo lsof -p [PID] -R

たとえば、635 PID の PPID を取得するには、次のように入力します。

sudo lsof -p 635 -R

出力は、ヘッダーに追加された PPID 列を示しています。

ディレクトリ下のファイルを表示

ディレクトリの下で開かれているすべてのファイルを表示するには、次のコマンドを使用します:

sudo lsof +D [directory path]

このオプションは、サブディレクトリも再帰しま​​す。再帰を避けるには、+d を使用します 国旗。

ネットワーク接続によってアクセスされたファイルを表示

-i を使用します lsof のフラグ ネットワーク接続によって開かれているファイルを確認します。このコマンドを実行してください:

sudo lsof -i

上記の例では、接続の種類に関係なく、ネットワーク接続によって開かれているファイルを出力します。

-i フラグは lsof に多くの汎用性を追加します 、ユーザーがさまざまな基準に基づいてファイルをフィルタリングできるようにします。 lsof -i [options] を使用 へ:

  1. IP に基づいてファイルをフィルタリング と:
sudo lsof -i [IP version number]

たとえば、IPv4 ファイルのみを表示するには、次のコマンドを実行します:

sudo lsof -i 4

反対に、IPv6 ファイルのみを次のように印刷します:

sudo lsof -i  6
  1. tcp を使用するファイルのみを表示 または udp プロトコル タイプを指定して接続:
sudo lsof -i [udp or tcp]
  1. 特定のポートで実行されているプロセスを見つける .このオプションは、別のアプリが特定のポートにバインドするのを妨げているファイルを確認するのに役立ちます。名前列のポート番号またはサービス名を使用してコマンドを実行します。
sudo lsof -i :[port number/name]
  1. 特定のポート範囲で開いているすべてのファイルを印刷します .

たとえば、UDP ポート範囲 1 ~ 1024 の開いているファイルを一覧表示するには、次を実行します。

開いているファイルを保持しているプロセスの ID を一覧表示する

特定のファイルを開いたプロセスの PID を表示するには、-t を使用します ファイル名を入力してください。

lsof -t [file name]

すべてのユーザーのプロセスを強制終了

-t フラグは、特定のユーザーによるすべてのプロセスも強制終了します。たとえば、ユーザー notsara によってすべてのプロセスを強制終了するには 、このコマンドをルートとして実行します:

# kill -9 'lsof -t -u notsara'

すべてのメモリ マップ ファイルを印刷

lsof どのプロセスがメモリ マップト ファイルを持っているかを出力します。これらのプロセスを表示するには、次を実行します:

 lsof -d mem

ロックされた削除済みファイルの表示

大きなファイルが削除された後でもプロセスによってロックされたままになり、ディスク領域が消費されることがあります。
Lsof を使用 Linux で削除されたが、1 つまたは複数のプロセスによってまだロックされているファイルを検索します。
たとえば、スラッシュ (/) を使用して、ルート ディレクトリから削除されたファイルを検索します。 ) パス記号として:

sudo lsof [path] | grep deleted

複数のオプションを組み合わせる

lsof コマンドでは、コマンド ラインで複数の検索項目を使用できます。 AND を使用 および または さまざまな引数を組み合わせて特定の結果を得るロジック。以下は最も一般的な例です。

  1. 特定のユーザーが開いているファイルを一覧表示する または 処理:
sudo lsof -u [username] -c [process]

出力には、ユーザー saraz によって開かれた両方のファイルが表示されます およびプロセス snapd によって使用されるもの .

  1. 最初の検索用語と論理演算子 -a を含む 2 番目の検索用語に一致するファイルのみを表示します (および):
sudo lsof -u [username] -c [process] -a

この場合、lsof ユーザー saraz によって開かれたファイルのみを表示します そしてバッシュ

  1. ユーザーのすべてのネットワーク接続を検索:
sudo lsof -i -u [username] -a

-i そして -a lsof のフラグ コマンドは、ユーザー root のすべてのアクティビティを出力します .

lsof の詳細

lsof コマンドには、他のどの Linux コマンドよりも多くのオプションがあります。 man ページはほぼ 2000 行の長さで、多くの情報を提供します。

コマンドの可能性を調べるには、次を実行します:

man lsof

結論

このチュートリアルでは、lsof の使用方法を示します 実際の例を使用して、潜在的なセキュリティとシステムの問題をトラブルシューティングするためのコマンド

次に、Linux でファイルとディレクトリをコピーし、Linux の diff コマンドを使用して 2 つのファイルを比較する方法を学びます。


Linux
  1. 例を含むLinuxTeeコマンド

  2. LinuxでのJQコマンドと例

  3. 7Linuxでのlsofコマンドの例

  1. 例を含むwcLinuxコマンド

  2. Linuxのソートコマンドと例

  3. 実用的な例を含む Linux rsync コマンド

  1. Linuxでのエコーコマンド(例付き)

  2. Linuxでのmanコマンドと例

  3. LinuxでのAWKコマンドと例