Я знаю, что это старый вопрос, но я предложу другой подход на тот случай, если кто-то сочтет его полезным. Я первоначально отправил это как ответ на вопрос, который был дублирован на этот.
Один из вариантов - использовать sysdig
: приложение для мониторинга системы с открытым исходным кодом. Используя его, вы можете отслеживать активность файла по имени. Предположим, вы хотите увидеть, какой процесс создает файл с именем /tmp/example.txt
:
# sysdig fd.name=/tmp/example.txt
567335 16:18:39.654437223 0 touch (5470) < openat fd=3(<f>/tmp/example.txt) dirfd=-100(AT_FDCWD) name=/tmp/example.txt flags=70(O_NONBLOCK|O_CREAT|O_WRONLY) mode=0666
567336 16:18:39.654438248 0 touch (5470) > dup fd=3(<f>/tmp/example.txt)
567337 16:18:39.654438592 0 touch (5470) < dup res=0(<f>/tmp/example.txt)
567338 16:18:39.654439629 0 touch (5470) > close fd=3(<f>/tmp/example.txt)
567339 16:18:39.654439764 0 touch (5470) < close res=0
567342 16:18:39.654441958 0 touch (5470) > close fd=0(<f>/tmp/example.txt)
567343 16:18:39.654442111 0 touch (5470) < close res=0
Из этого вывода видно, что touch
файл с именем pid 5470 открыл файл.
Если вам нужна дополнительная информация, вы можете запустить в «режиме захвата», где собрана трассировка системного вызова:
# sysdig -w /tmp/dumpfile.scap
Затем дождитесь создания файла, затем остановитесь sysdig
и запустите:
# csysdig -r /tmp/dumpfile.scap
Это позволит вам исследовать все, что произошло. Вы можете нажать <F2>
и выбрать Files
, нажмите, <F4>
чтобы найти имя файла, затем нажмите, <F6>
чтобы «копать» (который покажет вам вывод, похожий на команду выше). При этом вы можете использовать тот же подход, чтобы найти информацию о процессе, который фактически создал файл.
Есть версия GUI для csysdig
звонков sysdig-inspect
, если это больше ваша чашка чая.