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

fuser Linux コマンドと例

はじめに

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 でプロセスを一覧表示する方法を学びます。


Linux
  1. 例を含むLinuxTeeコマンド

  2. 例を含むLinuxヘッドコマンド

  3. LinuxでのJQコマンドと例

  1. 例を含むwcLinuxコマンド

  2. Linuxのソートコマンドと例

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

  1. Linuxでのエコーコマンド(例付き)

  2. Linuxでのmanコマンドと例

  3. LinuxでのAWKコマンドと例