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