Você pode usar o mecanismo do kernel inotify
para monitorar os arquivos acessados.
Primeiro, você deve verificar se inotify
está ativado no kernel:
pbm@tauri ~ $ zcat /proc/config.gz | grep CONFIG_INOTIFY
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
A próxima coisa a fazer é instalar inotify-tools
. Instruções para várias distribuições que você poderia encontrar na página do projeto - ela deve estar em repositórios de todas as principais distribuições.
Depois disso, o inotify está pronto para funcionar:
inotifywait /dirs/to/watch -mrq
( m
= não sai após um evento, r
= recursivo, q
= quiet)
Por exemplo - saída após ls /home/pbm
pbm@tauri ~ $ inotifywait /bin /home/pbm -mq
/bin/ OPEN ls
/bin/ ACCESS ls
/bin/ ACCESS ls
/home/pbm/ OPEN,ISDIR
/home/pbm/ CLOSE_NOWRITE,CLOSE,ISDIR
/bin/ CLOSE_NOWRITE,CLOSE ls
O importante é definir corretamente os diretórios para o relógio:
- não assiste
/
recursivamente - há muita leitura / gravação em/dev
e/proc
- não assiste seu diretório inicial de forma recursiva - quando você usa aplicativos, há muita leitura / gravação nos diretórios de configuração do aplicativo e nos diretórios de perfil dos navegadores
Em /proc/sys/fs/inotify/max_user_watches
existe uma opção de configuração que mostra quantos arquivos podem ser assistidos simultaneamente. O valor padrão (para o Gentoo) não é tão alto, portanto, se você definir o observador como /home/
, poderá exceder o limite. Você poderia aumentar o limite usando echo
(acesso root necessário).
echo 524288 > /proc/sys/fs/inotify/max_user_watches
Mas antes disso você deve ler sobre as consequências dessa mudança .
Opções que podem ser interessantes para você:
-
-d
= modo daemon -
-o file
= saída para o arquivo -
--format
= formato especificado pelo usuário, mais informações emman inotifywait
-
-e EVENT
= qual evento deve ser monitorado (por exemploaccess
,modify
, etc, mais informações emman
)