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で何も表示されなくなります。


コメント