紹介
fuser
コマンドは、指定されたファイル、ディレクトリ、またはソケットを使用しているプロセスを見つけるために設計されたLinuxユーティリティです。また、そのプロセスを実行しているユーザー、およびアクセスの種類に関する情報も提供します。
fuserユーティリティの使用方法
fuser
の マニュアルページを確認して、fuser
と使用するオプションの概要を取得できます。 fuser
の構文の概要を取得するには、オプションなしでfuser
を単独で実行することもできます。
- fuser
OutputNo 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
を実行します。
- fuser -v .
Output USER PID ACCESS COMMAND
/home/sammy: sammy 17604 ..c.. bash
このディレクトリで実行中の唯一のプロセスは、現在コマンドを実行しているインタラクティブなbash
シェルです。
冗長モードで実行すると、fuser
ユーティリティはプロセスのUSER
、PID
、ACCESS
、COMMAND
に関する情報を提供します。 ACCESS
の下のc
文字は、この場合、currentディレクトリを意味します。他のアクセスタイプには、実行中のexecutable、ルートディレクトリのr、オープンなfile、およびmappedファイルや共有ライブラリがあります。
ネットワークソケットを使用するプロセスの検索方法
TCPおよびUDPソケットを使用してプロセスを検索する必要がある場合もあります。この例を示すために、まずnc
を使用してポート8002でTCPリスナーを作成し、実行中のプロセスを観察できるようにします:
- nc -l -p 8002
これは実行中である限りターミナルをブロックします。別のターミナルウィンドウで、fuser
を使用して-n
オプションでTCPポート8002上で実行中のプロセスを検索します:
- 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
フラグを使用します:
- fuser -k 8002/tcp
Output8002/tcp: 18056
最初の端末ウィンドウに戻ると、nc
プログラムが終了してシェルに戻ったことに気付くでしょう。
fuserユーティリティは、特定のシグナルをプロセスに送信するためにも使用できます。-kオプションとともに使用すると、fuserコマンドはKILLシグナルをプロセスに送信します。特定の実行中のプロセスに送信できる他のシグナルもたくさんあります。これらはfuser -l
でリストアップできます:
- fuser -l
OutputHUP 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
は特に役立ちます。
次に、netstat
とdu
を使用して、他のサーバーリソースを監視する方法を学ぶことができます。
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-fuser-command