Scrip para monitorar arquivos parados em diretorios??

1. Scrip para monitorar arquivos parados em diretorios??

Leo de Lucas
leodelucas

(usa Debian)

Enviado em 11/01/2008 - 16:36h

Olá pessoal,

Bem gostaria muito da ajuda de vocês, Estou em uma fogueira... rsrs, tenho inumeros diretorios de ftp que não podem ter arquivos parados, preciso criar um scrip que em looping monitore arquivos parados por mais de 20 minutos dentro destes diretorios e apresente uma mensagem na tela ou envie um e-mail informando que existe arquivos parados.

não posso cadastrar este script no cron.
Agradeço grandemente se puderem me ajudar.

abraços...


  


2. Re: Scrip para monitorar arquivos parados em diretorios??

Perfil removido
removido

(usa Nenhuma)

Enviado em 11/01/2008 - 16:52h

O esquelo principal do seu script seria:

#!/bin/bash
while [1 = 1];do

if ls -l arquivo* > /dev/null
then
rm -rf arquivo*
fi

sleep 10 # Segundo de espera
done;

Ou algo do gênero.

Sds


3. Re: Scrip para monitorar arquivos parados em diretorios??

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 11/01/2008 - 17:41h

A lógica do programa seria mesmo esta:

Inicia

Laço Infinto
verifica arquivos parados
sleep TEMPO
Volta no laço

Como nosso amigo mencionou.
Mas minha preocupação é o que tu define por arquivo parado?

Que não foi acessado?
Tens um problema ai. Se este for o caso tu terias que pegar a data atual, ver o status de cada arquivo para ver qual a ultima data de acesso e ver se já se passaram 20 minutos.

PROBLEMA: ao observar o status do arquivo tu mexe no tempo de acesso :-(

Para ver os tempos de um arquivo podes usar o comando stat, mas ainda vai ter o problema citado.

A física já sentencia: impossível medir algo sem influenciar aquilo que se está medindo!


4. Re: Scrip para monitorar arquivos parados em diretorios??

Leo de Lucas
leodelucas

(usa Debian)

Enviado em 11/01/2008 - 17:59h

Humm.. ok,

então, na verdade o fluxo é o seguinte, este arquivos são transmitidos de maquina a maquina por ftp e em alguns momentos eles ficam acumulando no diretório, acabam estourando o in buffer do diretório e trava tudo. E sim são arquivos não acessados, você tem alguma dica de como posso solucionar o problema que você citou e monitorar arquivo por arquivo levando em consideração hora e segundo ?

Agradeço. abraços.


5. stat

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 11/01/2008 - 19:31h

use o stat.

stat arquivo

Ou, mas precisamente:
stat -c "%x" arquivo

E eu ME ENGANEI!
Neste caso o stat consulta o estado do arquivo sem altera-lo. Rola sem problemas.

É que eu tive um problema no passado onde eu abria em um script os emails de um usuário e contava quantos tinha, para avisa-lo que a quota estava quase estourando e que ele tinha X emails e Y nao lidos. Ai eu como lia o arquivo, alterava a data de acesso o que gerou efeitos desagradaveis.

Para solucionar isto fiz um programa em C que memoria o tempo de acesso atual, faz o que tem que ser feito e restaura o tempo salvo. deu trabalho mas funcionou.


6. DICA

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 11/01/2008 - 19:36h

Olhei o man do stat e vi que tem o maravilhoso parametro %X. ele retorna o tempo de acesso em segundos.

Considerando que um date "+%s" retorna o tempo de agora em segundos, diminuir um do outro vai te dar precisamente a quantos segundos o arquivo está "parado".

MUMU!!

veja para este meu arquivo:

elgio@mate:~$ date; stat lixo.csv; echo $(( `date "+%s"` - `stat -c "%X" lixo.csv` ))
Sex Jan 11 19:34:05 BRST 2008

Acima, resposta do date. 19:34:05

File: `lixo.csv'
Size: 247 Blocks: 8 IO Block: 4096 arquivo comum
Device: 302h/770d Inode: 345581 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ elgio) Gid: ( 1000/ elgio)
Access: 2008-01-11 19:27:56.000000000 -0200
Modify: 2008-01-11 10:54:21.000000000 -0200
Change: 2008-01-11 10:54:21.000000000 -0200

Acima, resposta do stat. O arquivo lixo.csv foi alterado pela ultima vez as 19:27:56.

Temos:
Agora = 19:34:05
Acesso = 19:27:56

369

Acima a resposta do echo esquisito. 369 segundos.
O arquivo está parado a 6min9 seg = 6*60+9 = 369

VOALÁ!

Vai com fé!

:-D
elgio@mate:~$



7. Script pronto

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 11/01/2008 - 20:50h

Ficou estranho quando coloquei o script no forum.
Coloquei para download em meu site:

Em TXT:
http://gravatai.ulbra.tche.br/~elgio/verifica.txt

Para baixar:
http://gravatai.ulbra.tche.br/~elgio/verifica.sh

Aproveita que estou de ferias!!



8. Re: Scrip para monitorar arquivos parados em diretorios??

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 14/01/2008 - 14:23h

E ai, deu certo?



9. Re: Scrip para monitorar arquivos parados em diretorios??

Leo de Lucas
leodelucas

(usa Debian)

Enviado em 14/01/2008 - 14:32h

Fla Elgio,

Olha primeiramente... Muito obrigado pela resposta a minha pergunta.

Passei 3 dias tentando desenvolver um script pra fazer isso, mas ainda estou engatinhando no unix e nem preciso falar o quanto no shell, vou testar o script agora e te mando a resposta.

Mas obrigadão pela pronta ajuda. um dia chego lá no desenvolvimento de scripts, rsrs...

Abração.




10. Re: Scrip para monitorar arquivos parados em diretorios??

Leo de Lucas
leodelucas

(usa Debian)

Enviado em 14/01/2008 - 16:30h

Olá Elgio,

Bem, testei o script e me surgiu um problemas, o script vai rodar em ambiente unix.

2 - Os diretorios serão lidos a partir de um arquivo que contem o nome e o caminho de cada diretorio, qual comando mais indicado para realizar esta atividade?

exemplo da estrutura de diretorio que o script vai ler:

name:"IS_Z2",neDiskPathF:"/Projetos/Sapbr/interface/collection/ftamgrpa/zsne01/"
name:"PPS_in_CS1_IN4",ppsDiskPathF:"/Projetos/emm_srv1/internal/PPS/tmp_in/IN4/"
name:"srce01_in",neDiskPathF:"/Projetos/sapbr/interface/collection/ftamgrpa/srce01/"

Até a virgula é o nome do diretorio, depois da virgula é o diretorio onde os arquivos não podem ficar parados..


Agradeço a sua ajuda.
abç...


11. Re: Scrip para monitorar arquivos parados em diretorios??

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 14/01/2008 - 18:08h

Hmmm. Tem que pesquisar um stat para Unix.
E que tenha o parâmetro %X que se mostrou muito útil. Eu já usei Unix a muito tempo, vou ver se descubro algo.

name:"IS_Z2",neDiskPathF:"/Projetos/Sapbr/interface/collection/ftamgrpa/zsne01/"
name:"PPS_in_CS1_IN4",ppsDiskPathF:"/Projetos/emm_srv1/internal/PPS/tmp_in/IN4/"
name:"srce01_in",neDiskPathF:"/Projetos/sapbr/interface/collection/ftamgrpa/srce01/"

Não entendi bem o que cada parte significa, mas considerando que o que precisa ser testado é a ultima parte, depois do DOIS PONTOS e entre aspas:
/Projetos/Sapbr/interface/collection/ftamgrpa/zsne01/

Isto se pega com um cut.
Ai a parte:

for d in $DIR

Pode ser trocada por

for d in `cat arquivo|cut -d: -f3|tr -d"`

Algums problemas de compatibilidade: talvez tenha que colocar um escape nas aspas dentro do t, fazendo assim \"
Ou então colocar entre aspas SIMPLES '"'





12. Re: Scrip para monitorar arquivos parados em diretorios??

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 14/01/2008 - 18:12h

Segundo deixou a entender este link:
http://www.ataliba.eti.br/taxonomy/term/97?page=30

Tem sim o comando stat no Unix!!

veja se não tem que instalar nada a mais ou se ele está em outro local que não esteja no path.



  
01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts