Para monitorar em "tempo real" qualquer arquivo acessado sob o diretório atual, abra um terminal e execute:
inotifywait -r -m -e access --format '%w%f' . | while IFS='' read -r fname; do [ -f "$fname" ] && lsof "$fname"; done
Ou, como se espalha em várias linhas:
inotifywait -r -m -e access --format '%w%f' . | while IFS='' read -r fname
do
[ -f "$fname" ] && lsof "$fname"
done
Isso requer um sistema operacional, como o linux, que suporta inotifywait .
O corpo do loop while pode ser substituído por qualquer coisa que seja adequada ao seu propósito.
O significado das opções para inotifywait são:
-
-rMonitore recursivamente por meio de subdiretórios.
-
-mMonitore continuamente.
-
-e accessMonitore eventos de ACESSO. Há muitos eventos possíveis que podem ser de interesse, mas isso parece ser o mais parecido com o que você pediu.
-
--format '%w%f'Escreva o caminho e o arquivo de cada arquivo acessado para o padrão.
-
.Monitore o diretório atual,
..
Limitação
O código acima não manipula nomes de arquivos que contenham caracteres de nova linha. Para lidar com isso, é necessário usar a opção -csv do inotifywait junto com mais código que entende as sutilezas do formato CSV.