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

5 実用的な Linux fuser コマンドの例

Linux の fuser ユーティリティは強力なツールです。名前が示すように、ファイル ユーザーまたはファイルまたはディレクトリを現在使用しているプロセスに関する情報を提供します。

しかし、定着器の機能は、プロセスに関する情報を提供するだけに限定されません。この記事では、fuser ユーティリティの使用方法を 5 つの実用的な例で説明しています。

1.ファイルまたはディレクトリを使用しているのは誰ですか?

これが fuser コマンドの基本的な使い方です。つまり、特定のファイルまたはディレクトリを使用しているプロセスを特定します。

$ fuser  .
./:                   3965c  4175c  4281c  4334c  4337c

上記の例では、現在のディレクトリ「./」を使用してすべてのプロセスを見つけるために、fuser ユーティリティを使用しました。

出力は、fuser を使用するプロセスのプロセス ID で構成されていますが、すべての PID の後に文字「c」が続きます。アクセスの種類を示します。アクセスのタイプは次のいずれかです:

  • c 現在のディレクトリ
  • e 実行中の実行
  • f ファイルを開く。 f はデフォルトの表示モードでは省略されています
  • F ファイルを書き込み用に開きます。 F はデフォルトの表示モードでは省略されています
  • r ルート ディレクトリ
  • m mmap ファイルまたは共有ライブラリ

したがって、出力の「c」は、これらのプロセスがこのディレクトリを現在のディレクトリとして使用していることを意味します。

オプション -v を使用して、出力に詳細情報を表示します。

$ fuser -v ./
           USER        PID ACCESS COMMAND
./:       himanshu   3965 ..c..    bash
          himanshu   4175 ..c..    gedit
          himanshu   4281 ..c..    bash
          himanshu   4334 ..c..  socket_serv
          himanshu   4337 ..c..    bash

上記のように、現在のディレクトリで fuser を実行すると、このディレクトリを使用しているすべてのプロセスに関する情報が得られます。

2.実行可能ファイルのフューザー

socket_serv は、特定のポートをリッスンする TCP サーバーである C プログラムの実行可能ファイルです。

$ ./socket_serv

この実行可能ファイルで fuser を実行すると、次のように表示されます:

$ fuser -v socket_serv
                     USER        PID    ACCESS       COMMAND
socket_serv:         himanshu   4334    ...e.        socket_serv

この例のアクセス指定子は「e」です。上記の例で見たアクセス指定子とは異なります。ファイルが実行可能であることを伝えます。

3. TCP/UDP ソケットを使用してプロセスをチェックする

fuser を使用すると、TCP/UDP ソケットを使用してプロセスを確認することもできます。上記の socket_serv サンプル C プログラムの実行可能ファイルは TCP ポート 5000 で実行されているため、このソケットで fuser ユーティリティを使用してみましょう。

$ fuser -v -n tcp 5000
                       USER        PID ACCESS COMMAND
5000/tcp:            himanshu   4334   F....  socket_serv

したがって、fuser が TCP ポート 5000 で実行されているプロセスのすべての詳細情報を提供することがわかります。

上記の例以外に、このユーティリティで「-m」フラグを使用して、USB ドライブなどのマウントされたファイル システムを使用するプロセスを表示できます。

4.特定のプログラムを使用しているプロセスを強制終了

これまで、fuser はファイル、ディレクトリ、ソケットなどを使用してプロセスに関する情報を提供することを学びました。しかし、このユーティリティの能力は、情報を提供することだけに限定されません。このユーティリティを使用してプロセスを強制終了することもできます。

バイナリ ファイル「socket_serv」にアクセスしているシステムで TCP サーバーが実行されていることがわかりました。それでは、fuser を使用して、このバイナリ ファイルを使用してプロセスを強制終了してみましょう。

$ fuser -v -k socket_serv
                      USER        PID ACCESS COMMAND
socket_serv:         himanshu   4334 ...e.   socket_serv

「-k」フラグを使用して、ファイル「socket_serv」を使用してプロセスを強制終了したことに注意してください。サーバーが実行されていた別の端末を見てみましょう。

$ ./socket_serv
Killed

4 つの異なる方法を使用してプロセスを強制終了する方法については既に説明しました。これで、プロセスを強制終了する方法がもう 1 つわかりました。

5. fuser を使用してインタラクティブにプロセスを強制終了

上記の例では、特定のファイルを使用してプロセスを強制終了したい場合にフラグ「-k」が使用されていますが、誤ってプロセスを強制終了することを避けるために、別のオプション「-i」が存在します。このオプションを使用すると、「fuser」はインタラクティブ モードで実行され、プロセスを強制終了する前に確認します。以下の例を参照してください。

$ fuser -v -k -i socket_serv
                      USER        PID ACCESS COMMAND
socket_serv:         himanshu   5643 ...e.   socket_serv
Kill process 5643 ? (y/N) y

したがって、「-k」と「-i」を使用すると、特定のファイルを使用するプロセスを選択的に強制終了できることがわかります。

さて、これは「fuser」コマンドの非常に強力な使い方です。

ファイルを強制的に削除したいが、それが多くのプロセスで使用されている場合、プロセスはファイルを削除できません。その場合、fuser ユーティリティを使用して、そのファイルを使用しているすべてのプロセス (または選択したプロセス) を強制終了できます。

$ fuser -v -k -i ./
           USER        PID ACCESS COMMAND
./:       himanshu   3965 ..c..    bash
          himanshu   4175 ..c..    gedit
          himanshu   4281 ..c..    bash
          himanshu   4334 ..c..  socket_serv
          himanshu   4337 ..c..    bash
Kill process 3965 ? (y/N) y
Kill process 4175 ? (y/N) y
Kill process 4281 ? (y/N) y
Kill process 4334 ? (y/N) y
Kill process 4337 ? (y/N) y

「-k」を使用すると、その特定のファイルを使用しているプロセスに SIGKILL シグナルが送信されることに注意してください。オプション -SIGNAL を使用して、他のシグナルを送信できます。 fuser がサポートするシグナルのリストは次のとおりです:

$ fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

たとえば、次の例では、-k オプションを使用すると、SIGKILL ではなく SIGHUP が送信されます。

$ fuser -v  -k -HUP -i ./

Linux
  1. Linuxでのcdコマンドの7つの実用例

  2. scpコマンドを使用する10の実際的な例

  3. Linuxでのcpコマンド:7つの実用的な例

  1. Linuxシャットダウンコマンド:5つの実用的な例

  2. Linuxでのddコマンドの5つの実用例

  3. 10 実用的な Linux nm コマンドの例

  1. 初心者向けのLinuxLSコマンドの16の実用例

  2. Linux での dmsetup コマンドの使用例

  3. Linux での fuser コマンドの例