Я хочу создать bash-скрипт, чтобы определить, открыт ли мой файл другим пользователем.
Я уже пробовал с lsof
, но это не сработало, как я хотел. Файлы могут иметь различные типы расширений, например txt, pl, conf, cfg и т. д. Кто-нибудь может мне помочь?
У меня есть один сервер с несколькими файлами .conf. Если я пишу в одном файле, я не могу знать, пишет ли другой пользователь в тот же файл тоже. Поэтому я хотел бы создать сценарий, который позволит мне это знать.
Я пытался что-то вроде этого lsof | grep MyFile
или lsof /root/blabla/myfolder/myfile
и т. Д. Может быть, я не понимаю, использование этого инструмента.
Я постараюсь лучше объяснить мою проблему. Есть много пользователей, которые могут изменить .conf файл. Если два пользователя работают с одним и тем же файлом, то при последнем сохранении данные, сделанные другим пользователем, будут перезаписаны. Мой скрипт хочет предупредить пользователей, что файл уже открыт другим пользователем, и, возможно, открыть файл в режиме только для чтения. Я уже пробовал использовать ps aux
(спасибо за подсказку), но не могу оценить, был ли недавно мой файл закрыт.
lsof точно перечисляет все открытые файлы.
"проблема" состоит в том, что большинство редакторов открывает файл, считайте содержание (в поршень), и затем закройте файл.
Редакторы тогда откроют файл при записи изменений.
, Чтобы видеть, используют ли какие-либо редакторы файл, для всех пользователей, выполнение
ps aux | grep file name
, Пример
Открывает test.file с нано в одном терминале.
В другом терминале выполняет команды follwoing:
bodhi@daemon:~$sudo lsof | grep test.file
[sudo] password for bodhi:
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
Примечание: никакой вывод;)
Теперь выполненный PS aux
bodhi@daemon:~$sudo ps aux | grep test.file
bodhi 4736 0.0 0.0 121096 3404 pts/3 S+ 17:49 0:00 nano test.file
Теперь мы видим информацию, которую мы хотим;)
нано обнаруживается, и мы редактируем test.file
@bodhi.zazen точно показал что причина Ваших файлов, не показываемых в выводе lsof.
ну, так как мы испытываем недостаток в описании Вашего варианта использования, я предположу, что Ваш сценарий
, Если это верно, одна вещь, которую можно сделать:
sha1sum <file>
Это не идеально, и это - просто выстрел в темноте, так как мы пропускаем контекст, но возможно это будет полезно в некотором роде Вам.