Para monitorar o que ocorre com arquivos ou diretórios podemos utilizar o serviço "inotify".
Nessa dica será mostrado apenas como monitorar especificamente um diretório e executar ações relativos a ação ocorrida.
Mais informações sobre o sistema inotify pode ser vista nesse link.
Abaixo segue um pequeno shell-script que apenas mostra as ações que ocorreram jogando as informações para um comando "while" e então tratando-as.Nesse cado, especificamente, apenas mostra na tela mas pode até mandar mensagens, e-mail, desligar o computador, fazer uma ligação ou sei lá o que sua imaginação possa imaginar. rsrs
Crie um arquivo monitora.sh
#!/bin/bash
clear
inotifywait -q -r -m $1 -e access,modify,attrib,close_write,move,create,delete | while read caminho ocorrencia arquivo;
do
echo ": $ocorrencia - ${caminho}${arquivo}"
done
Para monitorar o diretório basta usar "./monitora.sh ".
Nesse exemplo apenas é mostrado na tela as ocorrências monitoradas. O comando colocado entre "do" e "done" definirá a ação a ser executada. Então, nesse ponto, entra a criatividade.
Entendendo o comando:
inotifywait - aguarda por mudanças utilizando o inotify de arquivos/diretórios
-q = Determina que mensagens do sistema, que não sejam exatamente o status esperado, seja ocultado.
-r = Todos os subdiretórios também serão monitorados.
-m= Habilita o modo "monitoramento" fazendo com que o programa seja executado continuamente.
$1 = O parâmetro passado na linha de comando.
-e = As funções que serão monitoradas.
Demais informações, use o man do comando inotifywait.
Nesse exemplo apenas é mostrado na tela as ocorrências monitoradas. O comando colocado entre "do" e "done" definirá a ação a ser executada. Então, nesse ponto, entra a criatividade.
Entendendo o comando:
inotifywait - aguarda por mudanças utilizando o inotify de arquivos/diretórios
-q = Determina que mensagens do sistema, que não sejam exatamente o status esperado, seja ocultado.
-r = Todos os subdiretórios também serão monitorados.
-m= Habilita o modo "monitoramento" fazendo com que o programa seja executado continuamente.
$1 = O parâmetro passado na linha de comando.
-e = As funções que serão monitoradas.
Demais informações, use o man do comando inotifywait.