フューザーコマンドとは何ですか?


フューザーコマンドは、ファイル、ディレクトリ、またはソケットを使用しているプロセスを見つけるために使用される非常にスマートなUNIXユーティリティです。 また、プロセスを所有しているユーザーとアクセスの種類に関する情報も提供します。 フューザーツールは、指定されたファイルまたはファイルシステムを使用するすべてのプロセスのプロセスID(PID)を表示します。

フューザーユーティリティの使い方は?


manコマンドは、任意のコマンドのマニュアルページを表示するために使用できますが、新しいこと、特にLinuxコマンドを学ぶための最良の方法は、実際の例を調べて、ターミナルでコマンドの入力を停止しないことです。 ターミナルで次のコマンドを実行して、フューザーユーティリティの使用オプションに関する情報を取得します。 Ubuntu12.04VPSでfuserユーティリティを試してみます。 ただし、Linuxディストリビューションを実行している限り、問題はありません。


fuser

root@exampleuser-X55CR:~# fuser 
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]]]

ディレクトリを使用してプロセスを表示する方法


フューザーユーティリティは、ツールを冗長モードで実行する-vオプションとともに使用できます。 詳細オプションは、ユーザーがユーティリティの実行状況をリアルタイムで確認できるように、コンピューター画面に詳細出力を生成するために使用されます。

root@exampleuser-X55CR:~# fuser -v .
                     USER        PID ACCESS COMMAND
/root:               root       3378 ..c.. vim
                     root       3398 ..c.. bash
                     root       3449 ..c.. bash
                     root      19370 ..c.. bash
root@exampleuser-X55CR:~#

上記の出力は、冗長モードで実行すると、fuseユーティリティがUSER、PID、ACCESS、およびCOMMANDに関する情報を提供することを示しています。 ACCESSの下の「c」文字はアクセスのタイプを示します。これは「現在のディレクトリ」を意味します。 e(実行可能ファイル)、r(ルートディレクトリ)、f(ファイルを開く)など、多くのアクセスタイプがあります。 fはデフォルトの表示モードでは省略されます)、F(書き込み用にファイルを開く、Fはデフォルトの表示モードでは省略されます)およびm(mmapされたファイルまたは共有ライブラリ)。

tcpまたはudpソケットを使用しているプロセスは何ですか?


TCPおよびUDPソケットを使用してプロセスを検索する必要がある場合があります。 これらのプロセスを検索するには、-nオプションを使用する必要があります。 -nオプションは、対応するネームスペースを選択するために使用されます。次のコマンドは、ポート80にtcpリスナーを作成します。

root@exampleuser-X55CR:~# nc -l -p 80
Since a tcp server is listening on port 80, the fuser utility can be used to find the process which is using the server’s socket. The -v option is used to put the fuser utility in verbose mode and the -n option is used to select the tcp protocol as a name space.
root@exampleuser-X55CR:~# fuser -v -n tcp 80
root@exampleuser-X55CR:~# fuser -v -n tcp 80
                     USER        PID ACCESS COMMAND
80/tcp:              root       3846 F.... nc
root@exampleuser-X55CR:~#

デフォルトでは、フューザーツールはIPv6ソケットとIPv4ソケットの両方を検索しますが、デフォルトのオプションは-4および-6オプションで変更できます。 -4オプションはIPv4を表し、-6オプションはIPv6を表します。 フューザーはPIDのみをstdoutに出力し、それ以外はすべてstderrに送信されることに注意してください。

‘fuser -v -n tcp 80’コマンドの結果は、netcatを使用するプロセスのプロセスIDが3846であり、それを起動するために使用されたコマンドが’nc’であることを示しています。 プロセスID(PID)はさまざまな方法で使用できますが、そのうちの1つはプロセスの強制終了です。 PIDとともに使用すると、killコマンドはそのプロセスIDに基づいてプロセスを強制終了します。 フューザーユーティリティを使用して、特定のファイルにアクセスしているプロセスを強制終了することもできます。 次のコマンドでは、-kオプションを使用して、ポート123で実行されているtcpリスナーを使用しているプロセスを強制終了します。 ユーザーが間違ったプロセスを強制終了しないようにするために、プロセスを強制終了する前にユーザーに確認を求める-iオプションが使用されます。

root@exampleuser-X55CR:~# fuser -k  123/tcp
123/tcp:             11543

‘fuser -k’コマンドを-iオプションとともに使用して、プロセスを強制終了する前にユーザーに確認を求めます。 ユーザーは、「はい」の場合はyで、殺害を確認しない場合は「N」で答えることができます。

root@exampleuser-X55CR:~# fuser -i -k 123/tcp
123/tcp:             12216
Kill process 12216 ? (y/N)
Use The -6 Option To Look For IPv6 Sockets.

次のコマンドは、詳細モードでフューザーツールを使用し、ポート123で実行されているIPv6ソケットを検索しようとします。

root@exampleuser-X55CR:~# fuser -v -n tcp -6 123
Since there is no IPv6 socket running on port 123, the command does not produce any output. The -6 option can be replaced with the -4 option in order to search for IPv4 sockets running on a specific port.

ファイルシステムにアクセスするプロセスを見つける


-mオプションをfuserコマンドとともに使用して、ファイルのファイルシステム上のファイルにアクセスするプロセスを見つけることができます。 このオプションでは、入力引数としてファイル名が必要です。 -mオプションは、特に、どのプロセスを強制終了するかを特定する目的でファイルシステムにアクセスするプロセスを検出するために使用する場合に非常に便利です。

次のコマンドは、「example.txt」が存在するファイルシステムにアクセスするすべてのプロセスを表示します。 フューザーユーティリティで-mオプションがどのように使用されるかを注意深く確認してください。

root@exampleuser-X55CR:~# fuser -v -m example.txt 
                     USER        PID ACCESS COMMAND
/root/example.txt:   root     kernel mount /
                     root          1 Frce. init
                     root          2 .rc.. kthreadd
                     root          3 .rc.. ksoftirqd/0
                     root          6 .rc.. migration/0
                     root          7 .rc.. watchdog/0
                    [...]
                    exampleuser   23347 .r.e. gcalctool
                    exampleuser   24527 f..e. chrome
                    exampleuser   25388 f..e. chrome
                    exampleuser   25628 .r.e. evince
                    exampleuser   25634 .rce. evinced
                    exampleuser   25706 .rce. gm-notify
                    exampleuser   25769 .rce. at-spi-bus-laun
                    exampleuser   28191 .rce. mate-settings-d
                    exampleuser   28193 .rce. mate-screensave
                    exampleuser   29942 f..e. chrome
                    exampleuser   30044 .r.e. evince
                    exampleuser   32721 f..e. chrome

フューザーユーティリティを使用して、特定の信号をプロセスに送信することもできます。 -kオプションとともに使用すると、fuserコマンドはKILLシグナルをプロセスに送信します。 特定の実行中のプロセスに送信できる多くの信号があります。 -lオプションは、フューザーツールで使用できる信号のリストを見つけるのに役立ちます。

root@exampleuser-X55CR:~# fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

上記の出力は、フューザーツールで使用できるすべての可能な信号を示しています。

結論


もちろん、この記事はフューザーツールのすべてのオプションと実際の例を網羅するのに十分ではありませんが、この記事で提供されるすべての例は、Linuxの忍者になるために役立ちます。

OltjanoTerpollari著