我使用的是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
Run Code Online (Sandbox Code Playgroud)
因此,我得到它所在目录的路径,但不是文件的路径(那里有其他文件),并且只有gedit处理方式,而不是sublime-text处理.
是否有一些简单的方法来查看任何其他程序是否打开了txt文件?
编辑:事实证明(参见@mata和@ctn的评论)一些编辑器加载文件并立即关闭它们,他们只是在保存时重新打开文件.这样,我们只能在他们仍然打开一个大文件时看到它(因为你有时间在打开时观察它),然后它会立即消失.
ctn*_*ctn 15
输出中出现的行lsof是打开的文件.如果您的文件不存在,则表示它未打开.其中列是PID(打开文件的程序的进程ID)和FD(与打开文件关联的文件描述符).这些没有特别的值表示打开/关闭.如果它出现,则意味着它是开放的.
查看http://linux.die.net/man/8/lsof并搜索文本contains the first nine characters