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

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

Re: [shell-script] Re: rodar via CRON ou DAEMON?


From: Julio C. Neves
Subject: Re: [shell-script] Re: rodar via CRON ou DAEMON?
Date: Thu, 29 Jul 2010 19:06:05 -0300

Cristiano,
vc disse:
"O problema de não atualizar quando se cria novos arquivos não está no fato
de que, embora o tail -f segure o pipe aberto, o ls, por sua vez, é
executado uma única vez e não há instrução que force sua repetição?"

e eu concordo inteiramente. Naquele dia estava estudando os diálogos
--tailbox e --tailboxbg e aproveitei um script de teste que estava fazendo e
testei a minha proposta em uma condição similar, mas ela realmente não usava
o ls.

Talvez um /proc da vida sofra alguma interferencia qdo se cria um arquivo.
Vale a pena analisar e, se descobrir algo, coloque na lista. Infelizmente
não conheço bem a estrutura deste FS. Sou formado no UNIX e lá o /proc não
existe.

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- SE turma de Shell/Zenity em 26/07 - address@hidden
- SP turma de Shell em 14/08 - www.4Linux.com.br
- Turmas fechadas em outras cidades ligue (21)8112-9988.


Em 29 de julho de 2010 11:17, Cristiano <address@hidden> escreveu:

>
>
> --- Em address@hidden <shell-script%40yahoogrupos.com.br>,
> "Julio C. Neves" <julio.neves@...> escreveu
> >
> > Eu acho que o assunto é bastante pertinente. Opessoal que usa shell
> > normalmente é admin e isso é um assunto interessante para qq admin que
> > mereça esse nome.
> >
> > Eu tentaria uma coisa totalmente diferente, pois acho que compromete
> menos o
> > processador. Seguinte:
> >
> > Script1
> > =======
> > mkfifo tubo
> > tail -f <(ls) > tubo
> >
> > O processo do tail permanece em waiting enquanto não se cria arquivo e
> qdo
> > criá-lo ele será enviado para o named pipe.
> >
> > Script2
> > =======
> > while :
> > do
> > ArqNovo=$(cat tubo)
> > ....
> > ....
> > done
> >
> > O named pipe precisa de um cara falando e outro ouvindo. Esse cat tubo
> > ligará um semáforo do S.O. e ficará esperando (sem onerar absolutamente
> > nada) a mudança deste semáforo que se dará qdo o outro processo "falar"
> do
> > outro lado do tubo e o que ele falou irá para a variável ArqNovo para que
> vc
> > possa trabalhar o dado da forma que vc quiser.
> >
> > Se enquanto o script2 estiver trabalhando o dado, for criado um novo
> > arquivo, o script1 ficará em waiting até que termine o ciclo do while e o
> > prg volte para o cat.
> >
> > Cara dê uma olhada em www.julioneves.com. Acho que a parte referente a
> named
> > pipe e substituição de processo [<(ls)] estão no Papo de Botequim 11. Lá
>
> > tudo mastigado e cheio de exemplos.
>
> Júlio, entendi sua sugestão, mas não consegui implementá-la.
>
> A atribuição da variável ArqNovo não está funcionando. O subprocesso (cat
> tubo) não retorna, enquanto o tail da outra ponta do pipe não é encerrado e,
> portanto, o loop não gira.
>
> Abri 3 shells no servidor. No primeiro, crei o pipe e rodei o tail. No
> segundo, rodei o cat no pipe e, em um terceiro shell, criei arquivos no
> diretório. Não funcionou. Veja o que fiz:
>
> http://pastebin.com/MrgeP056
>
> Como era esperado, o 'cat pipe' não retorna, enquanto o processo do tail
> não encerra. Mas também não recebe novos dados dele quando crio novos
> arquivos no diretório "dir_in".
>
> O problema de não atualizar quando se cria novos arquivos não está no fato
> de que, embora o tail -f segure o pipe aberto, o ls, por sua vez, é
> executado uma única vez e não há instrução que force sua repetição?
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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