LinuxのFuserコマンドの使用方法

紹介

fuserコマンドは、指定されたファイル、ディレクトリ、またはソケットを使用しているプロセスを見つけるために設計されたLinuxユーティリティです。また、そのプロセスを実行しているユーザー、およびアクセスの種類に関する情報も提供します。

fuserユーティリティの使用方法

fuserマニュアルページを確認して、fuserと使用するオプションの概要を取得できます。 fuserの構文の概要を取得するには、オプションなしでfuserを単独で実行することもできます。

  1. fuser
Output
No process specification given Usage: fuser [-fMuv] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIGNAL]] NAME... fuser -l fuser -V Show which processes use the named files, sockets, or filesystems. -a,--all display unused files too -i,--interactive ask before killing (ignored without -k) -k,--kill kill processes accessing the named file -l,--list-signals list available signal names -m,--mount show all processes using the named filesystems or block device -M,--ismountpoint fulfill request only if NAME is a mount point -n,--namespace SPACE search in this name space (file, udp, or tcp) -s,--silent silent operation -SIGNAL send this signal instead of SIGKILL -u,--user display user IDs -v,--verbose verbose output -w,--writeonly kill only processes with write access -V,--version display version information -4,--ipv4 search IPv4 sockets only -6,--ipv6 search IPv6 sockets only - reset options udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]

ディレクトリで実行中のプロセスを表示する方法

fuserは、ツールを詳細モードで実行する-vオプションとも使用できます。詳細オプションは、fuserが何をしているかをユーザーが観察できるように、より多くの出力を生成するために使用されます。現在のディレクトリ.-vオプションを含めてfuserを実行します。

  1. fuser -v .
Output
USER PID ACCESS COMMAND /home/sammy: sammy 17604 ..c.. bash

このディレクトリで実行中の唯一のプロセスは、現在コマンドを実行しているインタラクティブなbashシェルです。

冗長モードで実行すると、fuserユーティリティはプロセスのUSERPIDACCESSCOMMANDに関する情報を提供します。 ACCESSの下のc文字は、この場合、currentディレクトリを意味します。他のアクセスタイプには、実行中のexecutable、ルートディレクトリのr、オープンなfile、およびmappedファイルや共有ライブラリがあります。

ネットワークソケットを使用するプロセスの検索方法

TCPおよびUDPソケットを使用してプロセスを検索する必要がある場合もあります。この例を示すために、まずncを使用してポート8002でTCPリスナーを作成し、実行中のプロセスを観察できるようにします:

  1. nc -l -p 8002

これは実行中である限りターミナルをブロックします。別のターミナルウィンドウで、fuserを使用して-nオプションでTCPポート8002上で実行中のプロセスを検索します:

  1. fuser -v -n tcp 8002
Output
USER PID ACCESS COMMAND 8002/tcp: sammy 17985 F.... nc

注意:fuserツールはデフォルトでIPv4およびIPv6ソケットの両方をチェックしますが、これを-4および-6オプションでIPv4のみまたはIPv6のみの接続をチェックするように変更できます。

この出力は、netcatを使用しているプロセスのプロセスID(PID)が17985であり、それを起動したコマンドが「nc」であることを示しています。プロセスID(PID)は、実行中のプロセスを停止または終了させるなど、さまざまな方法で使用できます。Linuxでプロセスを管理する方法については、Linuxでプロセスを管理する方法:ps、kill、niceの使用方法を読むことで詳細を学ぶことができます。また、fuser自体を使用して特定のポートで実行中のプロセスを終了することもできます。これには-kフラグを使用します:

  1. fuser -k 8002/tcp
Output
8002/tcp: 18056

最初の端末ウィンドウに戻ると、ncプログラムが終了してシェルに戻ったことに気付くでしょう。

fuserユーティリティは、特定のシグナルをプロセスに送信するためにも使用できます。-kオプションとともに使用すると、fuserコマンドはKILLシグナルをプロセスに送信します。特定の実行中のプロセスに送信できる他のシグナルもたくさんあります。これらはfuser -lでリストアップできます:

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

結論

この記事では、Linuxシステム上の使用中のポートやディレクトリを監視するためのfuserの例をいくつか学びました。システムで実行中の未知のプロセスを理解しようとしているときに、fuserは特に役立ちます。

次に、netstatduを使用して、他のサーバーリソースを監視する方法を学ぶことができます。

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-fuser-command