Galera gostaria de fazer um script que monitore a data de modificação de um diretório.
O caso é o seguinte:
Um certo diretório recebe arquivos com uma freqüência x e a cada vez que isso acontece a data de modificação dele é atualizada. é o diretório "." no caso de um comando ls -ld.
Preciso que o script identifique se esse diretório não foi atualizado, ou seja, não recebeu arquivos a 2 horas a traz.
Tentei usando o find [diretório] -type d -mtime +x...
Porém o -mtime funciona em *24h e o comando -mmin não funciona na versão do sistema aqui.(Unix eu acho).
Não consegui usar o -mtime em horas usando 0.04 por exemplo.
Talvez uma forma de comparar a hora atual com a hora de atualização do diretório seja a solução, mas não sei como fazer em casos de 1:00 e 23:00 nessa caso 23:00 seria 2 horas atrás de 1:00, mas 23 é maior que 1.
Deve existir uma forma bem simples de fazer isso, porém eu não a conheço.
Ajudem por favor. Desde já agradeço.
[2] Enviado em 06/02/2012 - 16:04h Re: Script de monitoração [RESOLVIDO]
Por exemplo, para buscar os arquivos modificados nos últimos 5 minutos: find . -mmin -5
Utilize sempre o tempo em minutos, no caso de 2 horas use: find . -mmin -120
Se for um dia use "1440", 2 dias "2880" e assim por diante..
veja abaixo:
find . -type d -mmin -120
find: bad option -mmin
O sistema aqui é Unix parece que o find não possui o -mmin ainda. Procurei no man do find e não fala nada sobre -mmin. Como é um servidor, não posso fazer atualizações e preciso descobrir uma forma de fazer esse script do jeito que se encontra aos recursos atualmente.
[4] Enviado em 06/02/2012 - 17:11h Re: Script de monitoração [RESOLVIDO]
cara ... não sei se te atende ... ou se você acha gambiarra demais ... mas e se você colocasse um script assim pra rodar de 2 em duas horas.... ou colocando um sleep de 2 horas? ajuda?
find /home/ -newer /tmp/arquivo_de_controle -type f 2>>/dev/null
touch /tmp/arquivo_de_controle
no caso vc cria a cada 2 horas um arquivo de controle e compara a data com ele
[8] Enviado em 06/02/2012 - 18:37h Re: Script de monitoração [RESOLVIDO]
alexandregms ... cara eu nunca tinha utilizado o let pra calcular coisas....
fiz um testezinho de performance ... e foi o melhor desempenho ...
nossa valeu a dica viu!!!
[10] Enviado em 07/02/2012 - 05:04h Re: Script de monitoração [RESOLVIDO]
Leia este texto que contém um script que executa auditoria em arquivos tirados de uma lista txt em sistemas onde o comando find não exista ou não funcione adequadamente.
Bom galera obrigado a todos por ajudar, achei uma solução. Até bastante simples.
Se comparado com a solução do Alexandre ficou até parecido.
Na verdade percebi que era melhor monitorar atualizações de 1h e não de 2h. Visto isso:
Vi que já que se tratava de hora, achei melhor desconsiderar Minutos e Segundos.
# Data de atualização do diretório
DATA_DIR=`ls -ld $DIR | awk '{print $6 , $7 , $8}' | cut -c1-08`
Resultado do comando acima: Feb 7 15
# Data Atual do Sistema
DATA_ATU=`date | awk '{print $2 , $3 , $4}' | cut -c1-09`
Resultado do comando acima: Feb 7 15
Adicionado os 2 valores a suas respectivas variáveis só precisei de um IF:
# Se o valor das variáveis for diferente, então...
if [ "$DATA_DIR" != "$DATA_ATU" ] ; then
Com isso resolve o problema pois realmente só irá mudar o valor hora se o diretório realmente não for atualizado neste prazo. Não sei se minha explicação ficou boa, mas acho que dá pra entender a lógica, caso contrário perguntem posso detalhar mais.
Novamente, Obrigado a todos.
[12] Enviado em 07/02/2012 - 17:26h Re: Script de monitoração [RESOLVIDO]