psofでファイルを使用中のプロセスを表示する

psofは、ファイルをオープン中のプロセスを表示するコマンドです。

オープンされていないファイルをlsofしても、特に何も表示されません。

takk@deb8:~/tmp$ echo HELLO>a
takk@deb8:~/tmp$ lsof a
takk@deb8:~/tmp$ 

オープンさせると、使用しているプロセスが表示されます。

takk@deb8:~/tmp$ perl -e'open(FH,"<a");while(1){}' &
[1] 2418
takk@deb8:~/tmp$ lsof a
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
perl    2418 takk    3r   REG    8,1        6 809704 a
takk@deb8:~/tmp$ 

プロセスを止めると、

takk@deb8:~/tmp$ fg
perl -e'open(FH,"<a");while(1){}'
^C
takk@deb8:~/tmp$ 

ファイルはただのファイルに戻ります。

takk@deb8:~/tmp$ lsof a
takk@deb8:~/tmp$ 

ファイルオープンしても、クローズしていれば、プロセスが終了していなくても、lsofで何も表示されません。`

takk@deb8:~/tmp$ perl -e'open(FH,"<a");close(FH);while(1){}' &
[1] 2424
takk@deb8:~/tmp$ lsof a
takk@deb8:~/tmp$ 

では、クローズをせずにプロセスを終了したらどうなるでしょうか。

takk@deb8:~/tmp$ perl -e'open(FH,"<a");' &
[2] 2434
takk@deb8:~/tmp$ 
[2]+  終了                  perl -e'open(FH,"<a");'
takk@deb8:~/tmp$ lsof a
takk@deb8:~/tmp$ 

この場合も、プロセス終了時に、ファイルはクローズされるため、lsofで何も表示されなくなります。

コメント

タイトルとURLをコピーしました