LINUX.ORG.RU
ФорумAdmin

Определить какой процесс читает содержимое файла

 ,


1

1

Есть одноплатник, на нём запускается программа, которая каким-то образом считывает содержимое файла и передаёт информацию драйверу. Если файла нет, выводится сообщение об ошибке, с указанием того, что файл не найден.

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

При этом, судя по всему, файл открывается, считывается и закрывается. Поэтому lsof тут не помогает.

Какие есть ещё варианты?

Перемещено hobbit из general

Первое, что в голову пришло: программа только проверяет факт существования файла и передаёт эти сведения в ядро. А читает файл именно ядерный кот. Я, правда, уже и не помню, любой ли файл можно читать из ядра.

apt_install_lrzsz ★★★★
()

попробуй «strace -ff». Процесс может читать данные из треда.

Прочитать содержимое файла можно через mmap(), а не только через read(), но файл должен быть открыт.

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

Существование файла может проверяться функцией stat.
Попробуй ltrace, приблизительно так:
ltrace -S -n2 ...

ABW ★★★★★
()

Ещё подсистема inotify есть. Она в реальном времени сообщает о взаимодействиях с файлами.

sudo inotifywait -r -m /mnt/media/

Это покажет события чтения и изменения файлов. Есть и другие флаги, фильтры событий, и всё такое подробное. man inotifywait

ivanet
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария