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

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

RES: [shell-script] Extensao


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] Extensao
Date: Mon, 28 Jun 2004 19:50:59 -0300

Fala Andrew e Rodolfo,
Duas maneiras bem diferentes do padrão:

1 - O sinal 17 é gerado após o termino de um processo filho, experimente
fazer no prompt:
Prompt> trap "echo o comando terminou" 17
Prompt> sleep 3&

Após 3 segundo (antes do aviso de fim em background) vc receberá a msg "o
comando terminou".

Assim sendo, monitore o sinal 17 antes do mv e desative-o logo após.

2 - Qdo vc dispará um processo em background, a variável $! contém o número
deste processo, assim sendo, vc pode fazer o mv em background e monitorar o
fim do processo com um while. Assim:

while kill -0 $!
do
    sleep 1
done

O bacana deste último é que vc pode botar um indicador de processo, botando
um reloginho no lugar do sleep.

Se alguém quiser, me peça, mas *a t e n ç ã o* só mandarei para quem pedir
em pvt.

[ ]s a todos,
Julio Cezar Neves
- Programa de Software Livre -
Tel:+55 21 2528-7070 / +55 21 8112-9988
Fax: +55 21 2528-7646
mailto:address@hidden


| -----Mensagem original-----
| De: Rodolfo Villanova
| [mailto:address@hidden]
| Enviada em: segunda-feira, 28 de junho de 2004 18:30
| Para: address@hidden
| Assunto: RES: [shell-script] Extensao
| 
| 
| 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
| 
| 
| 
| 
| 
| ---------------------------------------------------------------------
| Esta lista não admite a abordagem de outras liguagens de 
| programação, como perl, C etc. Quem insistir em não seguir 
| esta regra será moderado sem prévio aviso.
| ---------------------------------------------------------------------
| Sair da lista: address@hidden
| ---------------------------------------------------------------------
| Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
 
Links do Yahoo! Grupos




 
 


reply via email to

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