20

Linux mint 13 xfce を使用しておりwv.gold、任意のプログラムで開いているかどうかを bash でチェックしようとしているという名前のファイルがあります (たとえば、sublime-textandで開きましたgedit)

多くのフォーラムでは、実行すると開いているか閉じているかlsof | grep filenameを取得する必要があると人々は言いますが、実際には を使用して実行しても何も取得せず (空の文字列)、 を使用して実行すると小さなリストを取得します。0256(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 からのコメントを参照)。このように、大きなファイルをまだ開いているときにのみ見ることができ (開いている間にファイルを観察する時間があるため)、その後すぐに消えます。

4

1 に答える 1

18

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

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

于 2013-06-26T13:56:01.993 に答える