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

Linuxでfuserコマンドを使用および最大限に活用する方法

特定のファイルを使用しているプロセスを特定し、それらを1つずつ強制終了するタスクが与えられたとします。これはすべてコマンドラインから実行する必要があります。あなたならどうしますか?ええと、もしあなたがコマンドラインの初心者なら、あなたは無知で助けを求めているでしょう。

しかし、コマンドラインの専門家は、アクセスしているファイル(またはディレクトリ、またはソケット)に基づいてプロセスを識別できるコマンドラインユーティリティがLinuxに存在することを知っている可能性があります。それだけでなく、このツールではこれらのプロセスを強制終了できるため、 killを使用する必要はありません。 またはkillall 個別にコマンド。私たちが話しているコマンドラインユーティリティはフューザーです 。

このユーティリティをまだ認識しておらず、その使用方法を理解したい場合は、この記事のように、これ以上探す必要はありません。fuserについて説明します。 詳細には、わかりやすい例をいくつか紹介します。

ただし、先に進む前に、このチュートリアルで説明されているすべての例、コマンド、および手順は、Ubuntu16.04LTSおよびfuserでテストされていることに注意してください。 使用したコマンドバージョンは22.21です。

Linuxフューザーコマンド

フューザー コマンド(前述のとおり)は、主にファイル、ディレクトリ、またはソケットを使用してプロセスを識別するために使用されます。このツールは基本的に、コマンドの引数として名前が渡されたファイルを使用しているプロセスのPIDを表示します。

これがフューザーです 最も基本的な形式で実行中のコマンド:

上のスクリーンショットから明らかなように、 fuserを使用してみました / home / himanshuを使用しているプロセスを確認する ディレクトリ、およびコマンド(その出力)は、プロセスIDのリストを生成しました。これまでのところ良好ですが、ここにはいくつかの問題があります。

まず、各PIDに追加される「c」は何ですか?コマンドのマニュアルページをざっと見ると、デフォルトの表示モードでは fuser コマンドは、ファイルまたはディレクトリにアクセスするプロセスのPIDを表示するだけでなく、アクセスのタイプも表示します。

各タイプのアクセスは文字で示されます:

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

ここで説明した例に戻ると、出力の文字「c」は、出力にPIDがリストされているすべてのプロセスが / home / himanshuにアクセスしていることを示しています。 現在のディレクトリとしてのディレクトリ。

プロセスは、ファイルまたはディレクトリに対して複数のタイプのアクセスを持つ可能性があることに注意してください。たとえば、次の出力は、ルート(/)ディレクトリが、現在およびルートディレクトリとして多くのプロセスによってアクセスされていることを示しています。

これまで、フューザー 表示されている出力には、プロセスIDのみが含まれており、それ以上のものは含まれていません。プロセス名も表示したほうがいいのではないでしょうか。そのためには、 -vを使用する必要があります コマンドラインオプション。次に例を示します。

次に、プロセス所有者のユーザー名を各PIDに追加するには、 -uを使用します。 コマンドラインオプション。その例を次に示します。

注:問題のファイルまたはディレクトリがマウントされたファイルシステムまたはブロックデバイス上にある場合は、 -mを使用します。 コマンドラインオプション。 「そのファイルシステム上のファイルにアクセスするすべてのプロセスが一覧表示されます」とmanページに記載されています。 「ディレクトリファイルが指定されている場合、そのディレクトリにマウントされている可能性のあるファイルシステムを使用するために、自動的にNAME/に変更されます。」

フューザーを使用してプロセスを強制終了する方法

これで、 fuserについて説明しました。 基本的に、最初に述べたタスク、つまり fuserを使用してプロセスを強制終了する方法について説明します。 ?この場合の簡単な例を見てみましょう。実行可能ファイルを実行し、実行中に fuserを使用してプロセスを強制終了してみます。 。

したがって、起動された実行可能ファイルは次のとおりです。

これがフューザーです test-fuserによって開始されたプロセスを理想的に強制終了するコマンド 実行可能ファイル。

fuser -v -k test-fuser

ああ、先に進んでこのコマンドを実行する前に、 -k コマンドラインオプションはfuserに指示します ファイルまたはディレクトリを使用して1つまたは複数のプロセスを強制終了します。

上記のコマンドを実行すると、次のようになります。

上のスクリーンショットから明らかなように、 -kを使用します fuserを使用したコマンドラインオプション test-fuserを殺しました 処理する。 フューザーを確認するには コマンドは、プロセスを強制終了する前にユーザーの確認を求めます。 -iを使用してください オプション。以下の例を参照してください:

以下は、-kオプションを使用する際に知っておく必要のあるフューザー関連の重要な詳細です。

  • -kを指定すると、fuserコマンドはデフォルトでSIGKILLシグナルを送信します。ただし、-SIGNALオプションを使用してこの動作を変更できます。
  • フューザープロセスがそれ自体を強制終了することはありませんが、他のフューザープロセスを強制終了する可能性があります。

fuser-その他の詳細

これまでに述べた情報とは別に、覚えておく価値のある詳細がいくつかあります。これらの情報はすべて、コマンドのマニュアルページにアクセスすることでアクセスできます。たとえば、次の情報は fuser 「制限」セクションのマニュアルページリスト:

       Processes accessing the same file or file system several times  in  the
       same way are only shown once.

       If the same object is specified several times on the command line, some
       of those entries may be ignored.

       fuser may only be able to gather partial information  unless  run  with
       privileges.   As  a consequence, files opened by processes belonging to
       other users may not be listed and  executables  may  be  classified  as
       mapped only.

       Installing  fuser SUID root will avoid problems associated with partial
       information, but may be undesirable for security and privacy reasons.

       udp and tcp name spaces, and UNIX domain sockets can't be searched with
       kernels older than 1.3.78.

       Accesses by the kernel are only shown with the -v option.

       The  -k  option  only  works  on processes.  If the user is the kernel,
       fuser will print an advice, but take no action beyond that.

結論

これまでに理解していたように、 fuser Linuxで非常に便利なコマンドラインユーティリティです。良い点は、ツールを理解することも使用することも難しくないので、初心者でも簡単に使い始めることができるということです。ここで触れなかった側面の1つは、このコマンドを使用すると、特定のポートで実行されているプロセスを識別して強制終了できるため、ネットワーク管理者にとっても無視しがたいツールになることです。


Linux
  1. Linuxgrepコマンドの使用方法

  2. Linuxでエイリアスを作成してエイリアスコマンドを使用する方法

  3. Linuxでidコマンドを使用する方法

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

  2. LinuxでPingコマンドをインストールして使用する方法

  3. Linux で「screen」コマンドを使用する方法

  1. Linuxの履歴コマンドの使用方法

  2. Linuxxargsコマンドの使用方法

  3. Linuxteeコマンドの使用方法