Linuxでの例で「fuser」コマンドを使用する方法を学ぶ


Linuxシステム管理で最も重要なタスクの1つは、プロセス管理です。これには、監視中のいくつかの操作、プロセスのシグナリング、およびシステムでのプロセスの優先順位の設定が含まれます。

top、ps、pgrep、kill、killallなどのプロセスを監視/処理するために設計された多数のLinuxツール/ユーティリティがあります。

この記事では、fuserと呼ばれるリソースの豊富なLinuxユーティリティを使用してプロセスを見つける方法を明らかにします。

フューザーは、特定のプロセスがアクセスしているファイル、ディレクトリ、またはソケットに基づいてプロセスを見つけることを目的とした、シンプルでありながら強力なコマンドラインユーティリティです。つまり、システムユーザーがファイルまたはソケットを使用してプロセスを識別するのに役立ちます。

Linuxシステムでフューザーを使用する方法

フューザーを使用するための従来の構文は次のとおりです。

# fuser [options] [file|socket]
# fuser [options] -SIGNAL [file|socket]
# fuser -l 

以下は、フューザーを使用してシステム上のプロセスを見つけるいくつかの例です。

オプションを指定せずにfuserコマンドを実行すると、現在の作業ディレクトリに現在アクセスしているプロセスのPIDが表示されます。

$ fuser .
OR
$ fuser /home/tecmint

より詳細で明確な出力を得るには、次のように -v または -verbose を有効にします。出力では、fuserは現在のディレクトリの名前を出力し、次にプロセス所有者(USER)、プロセスID(PID)、アクセスタイプ(ACCESS)、およびコマンド(COMMAND)の列を次の画像のように出力します。

$ fuser -v

[アクセス]列の下に、次の文字で示されるアクセスタイプが表示されます。

  1. c – current directory
  2. e – an executable file being run
  3. f – open file, however, f is left out in the output
  4. F – open file for writing, F is as well excluded from the output
  5. r – root directory
  6. m – mmap’ed file or shared library

次に、次のように、どのプロセスが 〜.bashrc ファイルにアクセスしているかを判別できます。

$ fuser -v -m .bashrc

オプション -m NAMEまたは -mount NAMEは、ファイルNAMEにアクセスするすべてのプロセスに名前を付けることを意味します。ディレクトリをNAMEと表記すると、そのディレクトリにマウントされている可能性のあるファイルシステムを使用するために、自動的に NAME/に変更されます。

このセクションでは、フューザーを使用してシグナルを強制終了し、プロセスに送信します。

ファイルまたはソケットにアクセスするプロセスを強制終了するには、次のように -k または -kill オプションを使用します。

$ sudo fuser -k .

ファイルまたはソケットにアクセスするプロセスを強制終了する意図を確認するように求められた場合に、プロセスを対話的に強制終了するには、 -i または -interactive オプションを使用します。

$ sudo fuser -ki .

前の2つのコマンドは、現在のディレクトリにアクセスしているすべてのプロセスを強制終了します。プロセスに送信されるデフォルトのシグナルは、-SIGNALが使用されている場合を除き、SIGKILLです。

以下のように、 -l または -list-signals オプションを使用してすべての信号を一覧表示できます。

$ sudo fuser --list-signals 

したがって、次のコマンドのようにプロセスにシグナルを送信できます。ここで、SIGNALは、上記の出力にリストされているシグナルのいずれかです。

$ sudo fuser -k -SIGNAL

たとえば、以下のこのコマンドは、/boot ディレクトリが開いているすべてのプロセスにHUP信号を送信します。

$ sudo fuser -k -HUP /boot 

高度な使用オプション、追加の詳細情報については、フューザーのマニュアルページをお読みください。

今のところは以上です。必要な支援や提案が必要な場合は、以下のフィードバックセクションからご連絡ください。