コマンド
fstat
現在オープンしているファイルの情報を表示
現在、どのプロセスが、どのファイルを参照/書き込みしているかを表示する。umount コマンドを実行して Device Busy エラーになったとき、どのプロセスがアクセスしているのかを調べるのに便利。
ファイル filename に現在アクセスしているプロセスを調べるには
% fstat filename
USER CMD PID FD MOUNT INUM MODE SZ|DV R/W NAME
foo jless 373 4 /usr 729624 -rw-r--r-- 5867 r filename
とする。これによると、ユーザ foo が実行しているプロセス jless (プロセス番号 373) が、ファイル filename (i-node 729624、パーミッション 644、ファイルサイズ 5867) を、読み込みモード (R/W=r) でオープンしていることがわかる。
vi や emacs・mule などのエディタでファイルを読み込んだ場合は、ファイルをオープンしてバッファに読み込んだ後 クローズしてしまう。よって、これらのエディタを使って、どのファイルにアクセスしていることを知るのは難しい (ちょうどファイルをオープンしている最中に fstat を実行しなければならない)。一方、tail -f や more・less はずっとファイルをオープンし続けるので、fstat で容易に調べることができる。
●オプション
-p PID 指定した PID のプロセスが開いているファイルのみを表示
-u user 指定したユーザのプロセスが開いているファイルのみを表示
-f 指定したファイル・ディレクトリの属するファイルシステムの情報を表示
% fstat -f /usr/
⇒ /usr が属するファイルシステムのファイルをオープンしているプロセス一覧を表示
fstat コマンドは BSD 系にしかない。SystemV では fuser という同様のコマンドがある。Linux では標準で lsof というコマンドがインストールされている場合が多い。