Я знаю, как настроить определенную программу, чтобы увидеть все файлы, которые она читает. Я знаю, как узнать, какие процессы в данный момент используют определенный файл.
Но есть ли способ протоколировать открытие всех файлов. Я хочу что-то вроде tail -f some/log/file
но вместо того, чтобы lsof -f /file/someone/might/open/soon
который выводит информацию каждый раз, когда что-то открывает этот файл.
Спасибо
Это можно сделать с помощью системы аудита. Вы не указали свою ОС, я полагаю, Linux. Проверьте http://linux.die.net/man/8/auditd и See also
страницы внизу.
Вы можете использовать inotify для запуска lsof при доступе к файлу. Например, в incrontab:
/etc/passwd IN_ACCESS /tmp/lsof.sh $@
Incrontab, похоже, не использует оболочку, поэтому перенаправления использовать нельзя. Вместо этого можно использовать обертку:
lsof -f -- $1 >> /tmp/lsof.log