Чтобы в режиме реального времени отслеживать доступ к любому файлу в текущем каталоге, откройте терминал и запустите:
inotifywait -r -m -e access --format '%w%f' . | while IFS='' read -r fname; do [ -f "$fname" ] && lsof "$fname"; done
Или, как разбито на несколько строк:
inotifywait -r -m -e access --format '%w%f' . | while IFS='' read -r fname do [ -f "$fname" ] && lsof "$fname" done
Для этого требуется ОС, такая как Linux, которая поддерживает inotifywait
.
Тело while
цикла может быть заменено на все, что соответствует вашим целям.
Значение параметров для inotifywait
:
-r
Мониторинг рекурсивно через подкаталоги.
-m
Мониторинг непрерывно.
-e access
Мониторинг событий ACCESS. Существует много возможных событий, которые могут представлять интерес, но это, как представляется, наиболее близко соответствует тому, что вы просили.
--format '%w%f'
Запишите путь и файл каждого файла, к которому осуществляется доступ, к стандартному выводу.
.
Мониторинг текущего каталога
.
.
ограничение
Приведенный выше код не обрабатывает имена файлов, которые содержат символы новой строки. Чтобы справиться с этим, нужно использовать опцию inotifywait -csv
вместе с большим количеством кода, который понимает тонкости формата CSV.