Я использую 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), что некоторые редакторы загружают файлы и закрывают их немедленно, и они просто открывают файл при его сохранении. Таким образом, мы можем видеть это только тогда, когда они все еще открывают большой файл (так как у вас есть время наблюдать его при открытии), и он исчезает сразу после этого.