20

我正在使用 linux mint 13 xfce 并且我有一个名为的文件wv.gold,如果它被任何程序打开,我正在尝试检查 bash(例如,我在sublime-text和中打开它gedit

在许多论坛中,人们说如果我运行,lsof | grep filename我应该得到0它是打开还是256(1)关闭,但实际上,如果我运行 using 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 文件是否被任何其他程序打开?

编辑:事实证明(参见@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 回答