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からのコメントを参照)。それを保存します。この方法では、彼らがまだ大きなファイルを開いているときのみ見ることができます(開いている間にそれを観察する時間があるので)そしてそれはすぐに消えます。
lsof
の出力に表示される行は、開いているファイルです。ファイルが存在しない場合、開いていないことを意味します。列には、PID(ファイルを開いているプログラムのプロセスID)とFD(開いているファイルに関連付けられているファイル記述子)があります。これらの特定の値は、オープン/クローズを示すものではありません。表示される場合は、開いていることを意味します。
http://linux.die.net/man/8/lsof をチェックして、テキストcontains the first nine characters