はじめに
fuser
コマンド (ユーザーを探す ) は、ファイル、ディレクトリ、またはソケットを使用してプロセスを識別するプロセス管理ツールです。さらに、fuser
プロセス所有者とアクセス タイプに関する情報を提供し、問題のプロセスを終了します。
この記事では、fuser
の使用方法について説明します。 Linux コマンドと例

前提条件
- Linux を実行するシステム。
- ターミナルへのアクセス
- 須藤権限。
Linux フューザーの構文
fuser
コマンドにはいくつかの可能な構文タイプがあります:
- オプションのみ .ターゲット ディレクトリ、ファイル、またはソケットに固有ではないアクションを実行します。
fuser [option]
- ディレクトリ、ファイル、またはソケットを指定 .ターゲット パスで実行されているすべてのプロセスを見つけて、それらの PID を一覧表示します。
fuser [file_or_directory_or_socket]
- オプションとディレクトリ、ファイル、またはソケットを指定 .検索を変更し、プロセスで特定のアクションを実行します。たとえば、それを終了します。
fuser [options] [file_or_directory_or_socket]
- オプションなし . 「プロセス仕様が指定されていません」 を表示します メッセージとヘルプ画面

Linux フューザー オプション
fuser
コマンドは、ファイル、ディレクトリ、またはソケットのみを指定した場合でも機能します。それでも、オプションを使用すると、より詳細な結果が得られます。
以下の表は、最も一般的な fuser
を示しています。 オプション:
コマンド | 説明 |
---|---|
-v , --verbose | PID をリストするだけでなく、USER、PID、ACCESS、および COMMAND フィールドを表示します。 |
-n , --namespace | 名前空間をデフォルト値から新しい値に変更します。 |
-m , --mount | ファイルに属するファイルを指定し、そのファイル システム内のファイルにアクセスするすべてのプロセスを一覧表示します。 |
-k , --kill | プロセスを強制終了します。 |
-i , --interactive | プロセスを終了する前に、ユーザーに確認を求めます。 |
-[SIGNAL] | デフォルトのシグナル (SIGKILL) ではなく、指定されたシグナルでプロセスを強制終了します。 |
-l , --list-signals | fuser で使用できるすべての信号名を一覧表示します . |
-a , --all | 少なくとも 1 つのプロセスによってアクセスされるコマンドで指定されたファイルを表示します。 |
-u , --user | プロセス所有者のユーザー名を各 PID に追加します。 |
-4 , --ipv4 | IPv4 ソケットのみを検索します。 |
-6 , --ipv6 | IPv6 ソケットのみを検索します。 |
-M , --ismountpoint | NAME でマウント ポイントが指定されている場合にのみ、プロセスを強制終了します。 |
-w | 書き込みアクセス権を持つプロセスのみを強制終了します。 |
-s 、--silent | -u を無視するサイレント操作を表します と -v オプション。 |
- | すべてのオプションをリセットします。 |
Linux fuser コマンドの例
fuser
プロセスを管理するための究極の Linux ツールです。ツールを最大限に活用するには、以下のセクションを参照して共通の fuser
を確認してください。
ディレクトリ内のプロセスを見つける
基本的な fuser
役割は、特定のディレクトリ内のファイルを使用しているプロセスを特定することです。構文は次のとおりです:
fuser [directory]
たとえば、現在のディレクトリで実行されているプロセスを一覧表示するには、ドット (.
) :
fuser .

出力には、現在のディレクトリにアクセスしているすべてのプロセスの PID が一覧表示されます。
端末に ホーム が表示されます フォルダーを現在のフォルダーにします。したがって、そのフォルダー パスを使用すると、同じ出力が出力されます。
fuser /home/sara

より読みやすい出力を印刷するには、-v
を使用します (verbose) ディレクトリの前のオプション:
fuser -v .

同じコマンドは、他のディレクトリでも機能します。たとえば、WhatIsThis でプロセスを特定します。 ホームに配置されたディレクトリ フォルダ:
sudo fuser -v /home/sara/WhatIsThis

注: sudo
の使用 root が所有するプロセスを含む、より多くのプロセスを出力します。
fuser -v .
出力は詳細で、次の列が含まれます:
- ユーザー - プロセスの所有者
- PID - プロセス ID。
- アクセス - アクセスの種類
- コマンド - プロセスを実行するコマンド
上記の例では、アクセス列に記号 c が表示されています。 、現在のディレクトリを示します。その他のアクセス タイプとシンボルは次のとおりです。
- へ - 実行中の実行可能ファイル
- f - ファイルを開く
- F - 書き込み用にファイルを開く
- r - ルート ディレクトリ。
- 分 - mmap されたファイルまたは共有ライブラリ
ファイルを使用してプロセスを一覧表示する
fuser
を実行して、ファイルにアクセスしているプロセスを見つけます ファイル名へのパスで。
fuser -v [filename]
たとえば、this_is_a_new_text を使用したプロセスを参照してください ホームのファイル 次のディレクトリ:
sudo fuser -v /home/sara/this_is_a_new_text

出力は以下を示します:
- プロセス所有者としてルート
- プロセスの PID。
- アクセス タイプ f 開いているファイルを表します。
- コマンド
less
ファイルへのアクセス
fuser
コマンドは、bin ディレクトリの PYTHON3 などの実行可能ファイルでも機能します:
sudo fuser -v /bin/python3

コマンドの出力:
- プロセス所有者としてルート
- プロセスの PID。
- アクセス記号 e 、ファイルが実行可能ファイルであることを伝えます。
- コマンド
networkd-dispat
ファイルを実行しています。
ソケットを使用してプロセスを見つける
TCP および UDP ソケットを使用してプロセスを検索するには、次を使用します。
fuser -v -n [socket_type] [port]
または:
fuser -v [port]/[socket_type]
-n
flag は、対応するソケット タイプ (TCP または UDP) を名前空間として選択します。たとえば、TCP ポート 631 で実行されているプロセスを次のように識別します。
sudo fuser -v -n tcp 631

短い構文は次のとおりです:
sudo fuser -v 631/tcp

どちらの場合も、コマンドはプロセスの PID、F を出力します。 アクセス タイプとして cupsd
コマンド。
ファイルシステムにアクセスするプロセスを見つける
-m
を使用します ファイル システムに属するファイルを対象とすることで、そのファイル システムにアクセスするすべてのプロセスを識別するために、fuser を使用してフラグを立てます。
たとえば、this_is_a_new_text が存在するファイル システムで実行されているすべてのファイルとプロセスを一覧表示するには、 ファイルが属している場合は、次を入力してください:
sudo fuser -v -m this_is_a_new_text

キル プロセス
-k
を使用した fuser コマンド フラグは、選択したパスでプロセスを終了します。たとえば、プロセスが this_is_a_new_text を実行しています。 ホームのファイル ディレクトリ。ファイルはコマンド less で開かれます。

fuser -k
を使用 Home を使用するすべてのプロセスではなく、このファイルにアクセスしているプロセスのみを強制終了します。 ディレクトリ:
sudo fuser -v -k /home/sara/this_is_a_new_text

ターミナルは、2 つのコマンドのいずれの後にも何も出力しません。さらに、fuser
のファイルをターゲットに 結果も出力しません。これは、プロセスが終了したことを意味します:
sudo fuser -v /home/sara/this_is_a_new_text

これを確認するには、this_is_a_new_text を確認してください 以前 less
で開かれたファイル :

出力には killed というメッセージが表示されます プロセスが強制終了されたことを確認する新しい空白の端末行。
対話的にプロセスを強制終了
フラグ -k
特定のファイルを使用しているすべてのプロセスを強制終了します。ただし、名前空間がディレクトリの場合、fuser -k
そのディレクトリにアクセスするすべてのプロセスを強制終了します。 ホームでこのコマンドを実行する ファイルを指定せずにディレクトリを削除すると、OS を実行しているプロセスが強制終了され、システムがシャットダウンされます .
間違いを避けるために、fuser
を実行してください -ki
を使用したインタラクティブ モードで オプション。 ホームでインタラクティブにプロセスを強制終了します 次のディレクトリ:
fuser -ki .

このコマンドは、プロセスを強制終了する前に毎回確認を求めます。したがって、y を押します プロセスを強制終了して次のプロセスに進むか、N を選択します。 次のプロセスにスキップします。
信号を送る
fuser
実行時 -k
で 、シグキル シグナルがプロセスに送信されます。ただし、通常の fuser -k
を中断するには 異なるシグナルでプロセスを実行および終了するには、-[SIGNAL]
を含めます
fuser -k -[SIGNAL] [file_or_directory_or_socket]
fuser
が認識しているすべてのシグナルを一覧表示するには 、実行:
fuser -l

出力は、fuser
の 31 個のシグナルを示しています。 使える。したがって、 fuser -k -[SIGNAL]
を実行すると 、信号を名前または番号 (-1 ~ -31) で指定します。たとえば、プロセスが制御されたシャットダウンを実行できるようにするには、-TERM
を使用します。 または -5
-[SIGNAL]
として .
たとえば、TERM
を使用して TCP ポート 631 を使用するプロセスを強制終了するには、 シグナル、実行:
sudo fuser -ki -TERM -n tcp 631

もう 1 つのオプションは、-5
を使用することです。 -[SIGNAL]
として ポート名として 631/TCP:
sudo fuser -ki -5 631/TCP

どちらの場合も結果は同じです。つまり、TERM
を使用します。 ソフト終了と -ki
を許可します フラグは確認を求め、エラーの可能性を減らします。
他の標準 Linux シグナルの機能と数値を確認するには、次を実行します。
man 7 signal

結論
このチュートリアルを読むと、ファイル、ディレクトリ、またはソケットを使用してプロセスを見つける方法、または fuser
でプロセスを終了する方法がわかります。 .
次に、任意のプロセスを強制終了する他の方法と、Linux でプロセスを一覧表示する方法を学びます。