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 - clemis...@gmail.com - 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 <boxferr...@gmail.com> escreveu: > > > --- Em shell-script@yahoogrupos.com.br <shell-script%40yahoogrupos.com.br>, > "Julio C. Neves" <julio.ne...@...> 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á > tá > > 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] ------------------------------------ --------------------------------------------------------------------- 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: shell-script-unsubscr...@yahoogrupos.com.br --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: shell-script-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html