忘れがちな脳のための覚え書き
- 前提
- Debian GNU/Linux lennyで確認
fuserはファイルやファイルシステムを使用しているプロセスのPIDを表示するコマンドらしいです。lsofに似たコマンドですね。ファイルだけでなくTCPやUDPソケットを使用しているプロセスのPIDも表示できます。
tcpのポートをみる場合は-nでtcpの名前空間と送信元のポート番号を指定します。PIDが分かるので、psコマンドの引数に指定してあげればプロセスが分かります。
masasuzu@lenny% fuser -n tcp 50575 [~] 50575/tcp: 2968 masasuzu@lenny% ps 2968 [~] PID TTY STAT TIME COMMAND 2968 pts/3 S+ 0:00 ssh 192.168.1.31 masasuzu@lenny%
…。それlsofでできるよ。
masasuzu@lenny% lsof -i:50575 [~] COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME ssh 2968 masasuzu 3u IPv4 21620 TCP lenny.intra.masasuzu.net:50575->leon.intra.masasuzu.net:ssh (ESTABLISHED)
前回紹介したlsofを使えば、一発でできたりします。
じゃあ、このコマンドは何が嬉しいのかというと、-kオプションを付けてあげると該当プロセスをkillしてくれるところじゃないでしょうか。
ファイルシステムをアンマウントするときとかに使うようです。このコマンド自体あまり使ったこと無いんでもっとほかに使い方があるのでしょうけれど。
今回はtcp 50575ポートを使っているプロセスをkillします。
masasuzu@lenny% fuser -n tcp 50575 -k [~] 50575/tcp: 2968 masasuzu@lenny% fuser -n tcp 50575 [~] masasuzu@lenny% ps 50575 [~] PID TTY STAT TIME COMMAND
こんな感じです。もしかしたら本来の使い方とは違うかもです。