FUSER(1) | User Commands | FUSER(1) |
名前
fuser -ファイルやソケットを使用しているプロセスを特定する書式
fuser [ -a| -s] [ -n space ] [ - signal ] [ -kimuv] name ... [ -] [ -n space ] [ - signal ] [ -kimuv] name ...説明
fuser は,引数としてわたされたファイルやファイルシステムを使用しているプロセスの PID を表示する。デフォルトの表示モードでは、それぞれのファイル名の後に、アクセスの形式を示す以下の文字が表示される:- c
- カレントディレクトリ。
- e
- 実行中のファイル。
- f
- オープンしているファイル。 f はデフォルトの表示モードでは省略される。
- r
- ルートディレクトリ。
- m
- mmap されたファイルか共有ライブラリ。
引数としてわたされたファイルが一つもアクセスされていないときや、致命的なエラーが発生した場合には、 fuser は 0 以外の値を返す。引数として指定したファイルがどれかひとつでもアクセスされていれば、 fuser はゼロを返す。
TCP と UDP のソケットを使用しているプロセスを探す場合には、名前空間を -n オプションによって選択しなければならない。このオプションを用いれば、ソケットはローカルとリモートのポート、およびリモートのアドレスによって指定できる (複数のソケットを指定することもできる)。すべてのフィールドは省略可能であるが、省略したフィールドの前にはコンマを置かなければならない。
[lcl_port][, [rmt_host][, [rmt_port]]]
IP アドレスにもポート番号にも、シンボルによる記述と数値による記述の両方が可能である。
オプション
- -a
- コマンドラインで渡されたすべてのファイルを表示する。デフォルトでは、一つ以上のプロセスからアクセスされているファイルのみが表示される。
- -k
- 指定したファイルにアクセスしているプロセスを kill する。 - signal で変更しなければ SIGKILL が送られる。 fuser プロセスは自分自身を kill することはできないが、他の fuser プロセスを kill することはできる。 fuser を実行しているプロセスの実効ユーザー ID は、 kill を行う前に、その実ユーザー ID にセットされる。
- -i
- プロセスを kill する前にユーザーに確認する。このオプションは、 -k オプションが指定されていない時には無視される。
- -l
- 使用できる signal すべてをリストアップする。
- -m
- filename には、マウントされたファイルシステム上のファイルか、マウントされたブロックデバイスを指定する。そのファイルシステム上のファイルにアクセスしているすべてのプロセスが表示される。ディレクトリファイルが指定されると、それは自動的に name/. に変換され、そのディレクトリにマウントされているファイルシステムが用いられるようになる。
- -n space
- 別の名前空間を選択する。サポートされている名前空間は、 file (ファイル名。これがデフォルト), udp (ローカルの UDP ポート), tcp (ローカルの TCP ポート) である。ポートの指定には、ポート番号とシンボル名の両方が使える。重複がなければ、省略記法 name / space (例えば name / proto) を用いることもできる。
- -s
- 表示を抑制する。 -u, -v はこのモードでは無視される。 -a オプションは -s オプションと同時に使ってはならない。
- - signal
- プロセスを kill する時に、 SIGKILL 以外のシグナルを指定する。シグナルの指定は名前 (例: -HUP) 数字 (例: -1) のどちらでも良い。
- -u
- それぞれの PID にプロセスの所有者名を追加する。
- -v
- 饒舌 (verbose) モード。プロセスは ps のような形式で表示される。 PID, USER, COMMAND の各フィールドは, ps と同じような内容である。 ACCESS は、プロセスがどのようにファイルへアクセスしているかを示す。アクセスがカーネルによって行われている場合 (たとえばマウントポイントやスワップファイルなど) には、 PID の代わりに kernel と表示される。
- -V
- バージョン情報を表示する。
- -
- すべてのオプションをリセットし、送るシグナルを SIGKILL にセットする。
ファイル
/proc location of the proc file system
/proc proc ファイルシステムの場所
例
fuser -km /home は、 /home ファイルシステムにアクセスしているすべてのプロセスを kill する。if fuser -s /dev/ttyS1; then :; else something; fi は、他のプロセスが /dev/ttyS1 を使っていない場合に限って something を実行する。
fuser telnet/tcp は、(ローカルの) TELNET ポートにアクセスしているすべてのプロセスを表示する。
制限
同一のファイルや同一のファイルシステムに、同じ方法で複数アクセスしているプロセス群は、一つだけ表示される。同一のオブジェクトがコマンドラインで二回以上指定されても、それらのエントリは無視される。
ルート権限で実行しない限り、 fuser が得ることのできる情報は部分的なものである。したがって、他のユーザーのプロセスによってオープンされたファイルは表示されないし、実行ファイルは mapped に分類されるだけになるだろう。
情報が部分的にしか得られないことによって生じるこの問題は、 fuser を root に SUID してインストールすれば避けることができるだろう。しかしこの方法は、セキュリティやプライバシーの理由から望まれないことが多いだろう。
udp と tcp の名前空間と UNIX ドメインソケットは、 1.3.78 より古いカーネルでは見つけることができない。
udp と tcp は、現在のところ IPv4 でしか動作しない。
カーネルによるアクセスは -v オプションをつけないと表示されない。
-k オプションはプロセスにしか有効でない。ユーザーが kernel の場合、 fuser はそれなりの助言を表示するだろうが、それ以上の動作は行わない。
著者
Werner Almesberger <Werner.Almesberger@epfl.ch>関連項目
kill(1), killall(1), ps(1), kill(2)October 25, 1999 | Linux |