Я использую linux mint 13 xfce, и у меня есть файл с именем wv.gold
, который я пытаюсь проверить в bash, если он открыт какой-либо программой (например, я открыл его в sublime-text
и gedit
)проверить, открыт ли файл lsof
во многих форумах люди говорят, что если я бегу 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), что некоторые редакторы загружают файлы и закрывают их немедленно, и они просто открывают файл при его сохранении. Таким образом, мы можем видеть это только тогда, когда они все еще открывают большой файл (так как у вас есть время наблюдать его при открытии), и он исчезает сразу после этого.
попытка 'fuser' из [' psmisc'] (http://psmisc.sourceforge.net/). Должен быть доступен как пакет psmisc для большинства дистрибутивов. Обратите внимание, что многие текстовые редакторы не сохраняют дескриптор открытого файла открытым файлам. Они читают файл, закрывают его и записывают обратно на сохранение. – mata
Убедитесь, что вы используете lsof как пользователь root, иначе он будет сильно ограничен в том, что он показывает – Magnus