Linux
 Computer >> コンピューター >  >> システム >> Linux

Linuxでlsofコマンドを使用して開いているファイルを一覧表示する方法

Linuxでlsofコマンドを使用して開いているファイルを一覧表示する方法

Linuxの良いところは、ブートプロセスからソフトウェアパッケージのインストールまで、すべてを簡単に表示および管理できることです。ここでは、Linuxでlsofコマンドを使用して、開いているファイルとそれらを使用するプロセスを表示する方法について説明します。これを表示する方法を知っていると、システムがどのように機能するかを理解し、特定のプロセスに必要なアクションを実行するのに役立ちます。

Lsofコマンド

開いているファイルとそれらを担当するユーザーまたはプロセスを表示するには、lsofを使用します 効用。デフォルトでは、lsof ほとんどのディストリビューションにプリインストールされています。

ただし、インストールしていない場合は、パッケージマネージャーを使用してシステムにインストールできます。

Debian / Ubuntu

Debianでは、次のコマンドを実行します:

sudo apt-get install lsof

Arch / Manjaro

Manjaroおよびその他のArchベースのディストリビューションでは、次のコマンドを実行してpacmanを使用します。

sudo pacman -S lsof

CentOS / REHL / Fedora

CentOSおよびREHLファミリーの場合、dnfを使用できます:

sudo dnf install lsof

lsofコマンドを使用してLinuxプロセスの開いているファイルを一覧表示する

ほとんどのLinuxコマンドと同様に、lsofユーティリティは非常に簡単に使用できます。コマンドlsofを入力することから始めます :

sudo lsof

上記のコマンドを実行すると、lsofはシステムで開いているファイルに関する情報を返すはずです。

COMMAND PID TID TASKCMD USER   FD      TYPE             DEVICE SIZE/OFF            NODE NAME
init      1             root  cwd       DIR               8,48     4096               2 /
init      1             root  rtd       DIR               8,48     4096               2 /
init      1             root  txt       REG               0,19   632048 281474976743906 /init
init      1             root    0u      CHR                1,3      0t0           15362 /dev/null
init      1             root    1u      CHR                1,3      0t0           15362 /dev/null
init      1             root    2u      CHR                1,3      0t0           15362 /dev/null
init      1             root    3w      CHR               1,11      0t0           15367 /dev/kmsg
init      1             root    4u     sock                0,8      0t0           22689 protocol: AF_VSOCK
init      1             root    5r      REG                0,4        0      4026532185 mnt
init      1             root    6r      REG                0,4        0      4026532201 mnt
init      1             root    7r      DIR               8,48     4096             240 /home/cap
init      1             root    8u      DIR               8,48     4096               2 /
init      1             root    9u     sock                0,8      0t0           21853 protocol: AF_VSOCK

注: sudo権限がある場合は、sudoを指定してコマンドを実行します 特定のファイルでの「許可が拒否されました」エラーを回避するため。

上記の出力に示されているように、lsof出力には次の列があります。

表現
コマンド ターゲットファイルを使用するプロセスの名前を表示します。
PID ファイルを使用するプロセスの一意の識別子。
TID 列にはスレッド識別子が表示されます。
TASKCMD タスクコマンドの名前。
ユーザー プロセスを実行しているユーザーのユーザー名またはUID。
FD ファイルとモードのファイル記述子。
タイプ ターゲットファイルに関連付けられているノード。
デバイス カンマで区切られたデバイス番号。
サイズ/オフ ファイルオフセットサイズのバイト単位のファイルサイズ
ノード ローカルファイルのiノード値。 statコマンドを使用してinodeを表示できます ファイルの情報。
名前 ファイルのマウントポイント。

lsofコマンドの出力の内容が何を表しているかを理解したので、コマンドを使用して特定の情報をフィルタリングしてみましょう。

特定のプロセスをフィルタリングする方法

特定のプロセスによって開かれた特定のファイルのみをフィルタリングするには、プロセス名またはPID値のいずれかを使用できます。

たとえば、Firefoxプロセスで使用されるファイルを表示するには、次のコマンドを使用できます。

sudo lsof -c firefox
Linuxでlsofコマンドを使用して開いているファイルを一覧表示する方法

このコマンドは、Firefoxプロセスによって開かれたすべてのファイルを表示します。

プロセスIDでフィルタリングするには、-pを使用できます。 オプションを選択し、プロセスIDを渡します。 topを使用できます ターゲットプロセスのプロセスIDを取得するコマンド。

たとえば、FirefoxプロセスのPIDを取得するには、次のコマンドを使用できます。

sudo ps aux | grep firefox

ターゲットプロセスのPIDを取得したら、lsofを使用して開いているファイルを表示します。

sudo lsof -p 2121
Linuxでlsofコマンドを使用して開いているファイルを一覧表示する方法

上記のコマンドは、PIDが指定されたプロセスによって開かれたファイルを出力します。

特定のユーザーをフィルタリングする方法

特定のユーザーが開いたファイルのみを表示するには、-uを使用できます 国旗。たとえば、Debianユーザーをフィルタリングするには、次のコマンドを使用します。

sudo lsof -u debian
Linuxでlsofコマンドを使用して開いているファイルを一覧表示する方法

特定のファイルをフィルタリングする方法

プロセスと特定のファイルを開いたユーザーだけを知りたいとします。これを行うには、ファイルの名前をlsofに渡します:

sudo lsof /bin/sleep
Linuxでlsofコマンドを使用して開いているファイルを一覧表示する方法

上記では、特定のファイルのみをフィルタリングし、ユーザー、プロセスIDなどの関連情報を返します。

まとめ

この簡単なチュートリアルでは、Linuxでlsofコマンドを使用して開いているファイルに関する情報をシステムに照会する方法について説明しました。ターミナル内のディレクトリの内容を一覧表示するための追加のコマンドを次に示します。


  1. LinuxでTeeコマンドを使用する方法

    Linuxシェルでパイプとリダイレクトを使用したことがある場合は、teeを使用する必要がある場合もあります。 ユーティリティ。 ティーは何をしますか? などのコマンド ls 現在のディレクトリの内容が表示されます。つまり、これらのコンテンツをstdout(標準出力)(通常は画面)、より正確には仮想端末ディスプレイに表示します。 のようなコマンド ls > file123 画面には何も表示されません。 signは、すべての出力をstdoutに表示するのではなく、ファイルにリダイレクトします。 file123には、以前に画面に表示されていたコンテンツが入力されます。 ディレクトリ

  2. LinuxおよびmacOSでfdを使用してファイルをすばやく検索する方法

    fdは、findコマンドのより簡単な代替手段です。切り捨てられた構文と省略されたコマンド構造を使用して、入力したコマンドを簡潔かつ的確に保ちます。ただし、fdの入力を容易にする冗長性の欠如により、理解がより困難になります。 fdは、デフォルトのfindコマンドよりも高速にパターンマッチングも実行します。 LinuxとmacOSでfdを使用する方法を学びます。 Linuxにfdをインストールする fdは、デフォルトでは多くのシステムに出荷されていません。好みのパッケージマネージャーを使用してアプリケーションをダウンロードしてインストールする必要があります。そうすれば、ターミナル内から実行できま