Подтвердить что ты не робот

Проверьте, открыт ли файл lsof

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

4b9b3361

Ответ 1

Строки, отображаемые на выходе lsof, являются открытыми файлами. Если ваш файл отсутствует, значит, он не открыт. Среди столбцов PID (идентификатор процесса программы, в которой открыт файл) и FD (файловый дескриптор, связанный с открытым файлом). Никакое конкретное значение для них не указывает на открытие/закрытие. Если он вообще появляется, это означает, что он открыт.

Просмотрите http://linux.die.net/man/8/lsof и найдите текст contains the first nine characters