LINUX.ORG.RU

Наблюдение за работой с файлами через /proc

 ,


0

3

Открываю я текстовым редактором файл, иду в /proc/[pid]/fd и не вижу линка на этот файл. И ведь это может быть нормально? Может редактор загрузил файл в память и закрыл дескриптор? А может я не то и не там ищу?

Как с помощью /proc узнать с какими файлами сейчас работает процесс?

Later: lsof тоже не показывает. Видимо конкретно эта программа сразу закрывает дескриптор. Блин.



Последнее исправление: Usruser (всего исправлений: 1)

если использовать view вместо vim, то прогргамма тоже не держит открытым файловый дескриптор, только если начать редактировать, тогда программа открывает swp файл

IvanR ★★★
()
Ответ на: комментарий от IvanR

Т.е. в общем случае нет возможности узнать с какими файлами работает та или иная программа. Фу.

Usruser
() автор топика
Ответ на: комментарий от Usruser

Так в общем случае она и не работает с файлами. Она работает с определенным буффером данных, который потом может записать по определенному пути. А может и не записать. А может и совершенно не по тому пути, по которому ты открыл файл изначально. И вообще, пока ты файл редактируешь в какой-то программе его можно тысячу раз удалить.

Ты хрчешь отслеживать не открытые файлы, а то, откуда программа получила ввод для заполнения буфера. Это совершенно разные вещи. А ввод она могла вообще не из файла получить, а из пайпа например.

anonymous
()
Ответ на: комментарий от anonymous

Вообще меня интересуют именно файлы. Я хочу установить кто создаёт файлы в конкретной директории. И если отследить момент создания файла оказалось легко с помощью inotify, то как перейти от имени файла к имени/pid программы непонятно. И, похоже, в общем виде это просто невозможно.

Usruser
() автор топика
Ответ на: комментарий от Usruser

И если отследить момент создания файла оказалось легко с помощью inotify, то как перейти от имени файла к имени/pid программы непонятно. И, похоже, в общем виде это просто невозможно.

Возможно: fatrace.

$ cd /path/to/file/
$ ls -l new.txt
ls: cannot access 'new.txt': No such file or directory
$ touch new.txt

параллельно:
# fatrace
...
touch(31981): + /path/to/file
touch(31981): O /path/to/file/new.txt
touch(31981): CW /path/to/file/new.txt
gag ★★★★★
()
Ответ на: комментарий от Usruser

Вообще меня интересуют именно файлы. Я хочу установить кто создаёт файлы в конкретной директории.

И ты не разу не задумался на тот счет, что это сторона файловой системы и отслеживать надо именно ее, а не владение ресурсами процессом? По логике твоих действий, чтобы отследить откуда запрос на сервер прилетает, ты бы решил отслеживать куда запросы каждый клиент отправляет.

anonymous
()
Ответ на: комментарий от anonymous

Я в сторонах не разбираюсь. Файловая система не владеет информацией кто создал файл.

Usruser
() автор топика
Ответ на: комментарий от gag

fatrace

Американцы толстые и за всеми следят. Совпадение? Не думаю.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.