web-dev-qa-db-ja.com

ファイルが開いているかどうかをlsofで確認します

Linux mint 13 xfceを使用しており、_wv.gold_という名前のファイルがあり、bashでプログラムで開いているかどうかを確認しようとしています(たとえば、_sublime-text_およびgeditで開きました)

多くのフォーラムで、_lsof | grep filename_を実行すると、開いている場合は_0_を、閉じている場合は256(1)を取得する必要があると言われますが、実際に実行すると何も(空の文字列)を取得しません_grep "wv.gold"_を使用し、_grep gold_を使用してリストを作成すると、小さなリストが表示されます。

リストは次のようなものです。

_bash       2045  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
bash       2082  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
watch      4463  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
gedit     16679  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
lsof      20823  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
grep      20824  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
lsof      20825  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
_

したがって、ディレクトリへのパスを取得しますが、ファイルへのパスではなく(そこに他のファイルがあります)、geditプロセスへのパスのみを取得し、_sublime-text_プロセスへのパスは取得しません。

Txtファイルが他のプログラムによって開かれたかどうかを確認する簡単な方法はありますか?

[〜#〜] edit [〜#〜]:一部のエディターは、ファイルをロードしてすぐに閉じることができます(@mataおよび@ctnからのコメントを参照)。それを保存します。この方法では、彼らがまだ大きなファイルを開いているときのみ見ることができます(開いている間にそれを観察する時間があるので)そしてそれはすぐに消えます。

15
rafa

lsofの出力に表示される行は、開いているファイルです。ファイルが存在しない場合、開いていないことを意味します。列には、PID(ファイルを開いているプログラムのプロセスID)とFD(開いているファイルに関連付けられているファイル記述子)があります。これらの特定の値は、オープン/クローズを示すものではありません。表示される場合は、開いていることを意味します。

http://linux.die.net/man/8/lsof をチェックして、テキストcontains the first nine characters

15
ctn