shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RES: [shell-script] Extensao


From: Rodolfo Villanova
Subject: RES: [shell-script] Extensao
Date: Mon, 28 Jun 2004 18:30:29 -0300

Fala, Andrew!

Por acaso, há poucos meses atrás, enfrentei um problema bem parecido, sendo
que o conteúdo do arquivo tratado possui um cabeçalho e um rodapé que, se
não estiver OK, o arquivo é movido para um diretório de anomalias e emitido
um aviso por e-mail.

Às vezes coincide de, na hora de movê-lo para outro diretório (por script
disparado pela cron ou que esteja aguardando em espera), o arquivo recebido
recém está sendo carregado. Pra prevenir esse caso, é util utilizar o
comando fuser <arquivo> (/usr/sbin/fuser) para verificar se está associado
ao arquivo um processo ativo.

Mas aqui reside um problema.

Pelo menos até onde pude comprovar através de testes entre servidores
distintos, o "fuser" não detecta a presença do serviço FTP sobre um arquivo,
ou seja, mesmo estando aberta a conexão desse serviço no servidor que recebe
o arquivo, o número do PID não aparece ao lado do arquivo ao acionar o fuser
sobre ele (hum, lembrei agora que não estudei todos os parâmetros do
"fuser"!). Daí a importância de existir um cabeçalho na primeira linha e um
rodapé na última linha que identifique o início e o fim do arquivo, e
enquanto ele não se completa, deixe o processo que realiza a  movimentação
alguns poucos ciclos tirando um pequeno cochilo - sleep (o cochilo quem deve
tirar é o processo, não o operador!!! ;)).

O que descrevi acima verifiquei em ambientes Unix Solaris e True64, mas é
possível que o mesmo ocorra em ambientes Linux em seus diversos "sabores".
Faça teus próprios testes. Dê uma boa olhada nos parâmetros do comando
fuser.

É possível encontrar outras soluções para atingir esse objetivo.
A que apresentei acima foi a primeira alternativa que encontrei e que
resolveu aquele problema específico, e ele continua rodando sem surpresas
até hoje.

Abraço e boa sorte.
--------------------------
Rodolfo D. Gross Villanova

> -----Mensagem original-----
> De: Andrew Amorim [mailto:address@hidden]
> Enviada em: segunda-feira, 28 de junho de 2004 17:47
> Para: address@hidden
> Assunto: RES: [shell-script] Extensao
>
> Não era bem isso amigo, deixa eu explicar...
> Quando um arquivo cai dentro do diretorio ele move para outro,
> isso de um em
> um segundo;
> Mas quando cai um arquivo muito grande, ele está movendo pela
> metade, pois o
> tempo de 1 segundo não é o suficiente para meu banco acabar de
> gerar todo o
> arquivo.
> Então queria ter uma excessão, que quando o nome do arquivo tiver
> "exp" por
> exmplo, ele demora mais tempo antes de mover..entendeu?
> Segue o script q estou usando...
>
> ### Move todos os arquivos que são gerados para outro, de 1 em 1 seg.
> #!/bin/bash
> DIR_ORIGEM=rem/
> DIR_DESTINO=transf/
> cd $DIR_ORIGEM
> if [
> while true; do
>   if [ `ls | wc -l` -gt 0 ]; then
>   mv * ../$DIR_DESTINO
>   fi
>   sleep 1
> done
>
> Muito Obrigado,
> Andrew
>
> -----Mensagem original-----
> De: Enderson Maia [mailto:address@hidden]
> Enviada em: segunda-feira, 28 de junho de 2004 15:45
> Para: address@hidden
> Assunto: Re: [shell-script] Extensao
>
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Andrew Amorim wrote:
>
> | Pessoal, boa tarde. Como faço para pegar a extensão de um arquivo?
> | Tenho um script que pega tudo o que tem dentro do diretorio e move
> | para outro de 1 em 1 segundo. Mas que q se  existir esta extensao,
> | o script faz outra coisa.
> |
> | Poderiam me ajudar?
> |
> | Obrigado.
> |
> Eu uso isso:
> *.[Tt][Xx][Tt]
>
> ele pegaria tudo que é txt!
>
> Sem mais,
>
> - --
> Enderson Maia
>
> ICQ: 8817986
> Linux User: 286130
> GPG: http://tinyurl.com/2ca3a





reply via email to

[Prev in Thread] Current Thread [Next in Thread]