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

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

Re: [shell-script] Busca em ShellScript


From: Rafael Henrique da Silva Correia
Subject: Re: [shell-script] Busca em ShellScript
Date: Wed, 6 Feb 2013 08:20:56 -0200

Realmente este assunto sobre desempenho em Scripts é muito interessante...
eu em minha ignorância no passado cheguei a usar:

for (<alguma coisa>); do

VARIAVEL=$(algum comando)

done

Isso torna o script MUITO lento, tento evitar fazer isso ao máximo hoje em
dia, a cada iteração do for é aberto um novo subshell (com o ps em uma
máquina com processador mais lento vc consegue até ver vários bash sendo
criados), isso demora MUITO e deixa a máquina muitas vezes com 100% de
processamento.

Robson sobre sua dúvida... talvez vc pudesse usar os comandos mais
comumente usados pra esse caso (chgrp, chown, chmod etc) será que isso
talvez não seria melhor? (Opinem :-) )

Att.

Em 6 de fevereiro de 2013 07:44, Robson Alexandre <address@hidden
> escreveu:

> Bom dia a todos,
> Acho muito interessante esse assunto no sentido sempre de otimizar
> recursos, mas fiquei com uma dúvida q sempre qdo faço meus scripts tenho q
> buscar alternativas q acredito serem mais lentas segundo nossa discussão.
> Por exemplo,
> Preciso criar um arquivo em um diretório com permissões apenas para admin
> Então faço
> echo "conteúdo" | sudo tee arquivo_a_criar
> Pois
> echo "conteúdo" > arquivo_a_criar
> Não funcionaria.
>
> Existe alguma forma como dito pelo Júlio no último email de utilizar apenas
> o shell?
>
> Atenciosamente
> Robson Alexandre
>
> Enviado de Android Samsung Mobile
> Em 05/02/2013 19:26, "Julio C. Neves" <address@hidden> escreveu:
>
> > **
> >
> >
> > Acho bacana fazer essas comparações pq todos usam do modo mais lento e
> > desconhecem os outros 2, que são bem mais rápidos.
> >
> > Experimente chegar numa sala com profissionais de TI, todos usuários
> Linus,
> > e pergunte como se cria um arquivo vazio em shell. Se houverem 100
> pessoas
> > na sal (nenhuma dessa lista ;) ouviremos pelo menos 90 dizendo que é com
> > touch (umas 5 dizem que é com vi ;).
> >
> > Aí eu mostro:
> > $ time for ((i=1; i<200; i++)); { touch lixo; }
> >
> > real 0m0.898s
> > user 0m0.088s
> > sys 0m0.168s
> > $ time for ((i=1; i<200; i++)); { > lixo; }
> >
> > real 0m0.044s
> > user 0m0.020s
> > sys 0m0.004s
> >
> > É impressionante como os profissionais do Linux ignoram uma ferramenta
> > simples e poderosa como o shell!
> >
> > Abcs,
> > Julio
> > @juliobash
> >
> > Em 5 de fevereiro de 2013 19:02, Alfredo Casanova
> > address@hidden>escreveu:
> >
> > > Realmente, agora a diferença foi notável
> > > dei sempre um du -s antes do comando só pra checar se o volume estava
> > muito
> > > maior
> > >
> > > $ du -s
> > > 1474240 .
> > > $ time find . -type f -exec grep -i "plink" {} > /dev/null \;
> > >
> > > real 4m6.693s
> > > user 2m26.301s
> > > sys 0m22.189s
> > >
> > > $ du -s
> > > 1474244 .
> > > $ time find . -type f | xargs grep -i "plink" > /dev/null
> > >
> > > real 2m30.238s
> > > user 2m17.161s
> > > sys 0m3.424s
> > >
> > > $ du -s
> > > 1474248 .
> > > $ time find . -type f -exec grep -i "plink" {} > /dev/null \+
> > >
> > > real 2m20.218s
> > > user 2m17.629s
> > > sys 0m2.400s
> > >
> > >
> > >
> > > 2013/2/5 Alfredo Casanova address@hidden>
> > >
> > > > Bom, o número de linhas buscadas pode ter se alterado um pouco, mas
> de
> > > > fato não verifiquei isso. O número de arquivos era o mesmo em todos.
> > > > Amanhã faço o teste isolando o ambiente
> > > > Em 04/02/2013 17:36, "Julio C. Neves" address@hidden>
> escreveu:
> > > >
> > > > **
> > > >>
> > > >>
> > > >> Deve ter ocorrido algo no momento que vc executou, pq a ordem
> > crescente
> > > de
> > > >> tempo é:
> > > >> » exec ... {} \+ --- esse é o mais rápido;
> > > >> » xargs --- Um pouquinho mais lento (o tempo do fork + o tempo da
> > carga
> > > do
> > > >> xargs);
> > > >> » exec ... {} \; --- o mais usado e mais lento.
> > > >>
> > > >> Abcs,
> > > >> Julio
> > > >> @juliobash
> > > >>
> > > >> Em 4 de fevereiro de 2013 17:00, Alfredo Casanova
> > > >> address@hidden>escreveu:
> > > >>
> > > >> > $ time find . -type f -exec grep -i "plink" {} > /dev/null \;
> > > >> >
> > > >> > real 4m19.462s
> > > >> > user 2m24.817s
> > > >> > sys 0m21.993s
> > > >> >
> > > >> > $ time find . -type f | xargs grep -i "string" > /dev/null
> > > >> >
> > > >> > real 3m32.933s
> > > >> > user 2m17.929s
> > > >> > sys 0m7.628s
> > > >> >
> > > >> > $ time find . -type f -exec grep -i "string" {} > /dev/null \+
> > > >> >
> > > >> > real 3m46.720s
> > > >> > user 2m18.237s
> > > >> > sys 0m7.880s
> > > >> >
> > > >> >
> > > >> >
> > > >> > acabou que o xargs se saiu melhor que o último
> > > >> >
> > > >> >
> > > >> > 2013/2/2 Julio C. Neves address@hidden>
> > > >> >
> > > >> > > **
> > > >> > >
> > > >> > >
> > > >> > > Armando,
> > > >> > > vou te pedir um favor: rode as linhas a seguir e publique o
> > > resultado
> > > >> > nessa
> > > >> > > lista para que a rapaziada veja que o modo mais tradicional e
> mais
> > > >> > usado, é
> > > >> > > o mais lento.
> > > >> > >
> > > >> > > Modo tradicional:
> > > >> > > $ time find . -type f -exec grep -i "string" {} > /dev/null \;
> > > >> > >
> > > >> > > Ligeiramente "envenenado":
> > > >> > > $ time find . -type f | xargs grep -i "string" > /dev/null
> > > >> > >
> > > >> > > Muito "envenenado":
> > > >> > > $ time find . -type f -exec grep -i "string" {} > /dev/null \+
> > > >> > >
> > > >> > > Mandei as saídas para /dev/null pq todas as saídas seriam
> iguais e
> > > >> > > igualmente corretas, mas o que nos interessa no caso é somente
> os
> > > >> tempos.
> > > >> > >
> > > >> > > - Dever de casa - ;)
> > > >> > > Se alguém além do Armando (que iniciou a thread) tiver um
> > diretório
> > > >> com
> > > >> > > muitos arquivos de texto que possa fazer essa medição, peço que
> tb
> > > >> poste
> > > >> > os
> > > >> > > resultados na lista.
> > > >> > >
> > > >> > > Abcs,
> > > >> > > Julio
> > > >> > > @juliobash
> > > >> > >
> > > >> > > Em 1 de fevereiro de 2013 20:13, Rafael Henrique da Silva
> Correia
> > <
> > > >> > > address@hidden> escreveu:
> > > >> > >
> > > >> > >
> > > >> > > > Acrescentando meus 0,02 centavos (li alternativas ótimas nas
> > > >> respostas
> > > >> > do
> > > >> > > > pessoal).... eu geralmente uso algo assim:
> > > >> > > >
> > > >> > > > $ find
> > > >> > > -type f -exec grep -i "string" \;
> > > >> > > >
> > > >> > > > Espero que vc consiga achar o find perfeito para seu problema
> > ...
> > > ;)
> > > >> > > >
> > > >> > > > Até+
> > > >> > > >
> > > >> > > > Em 1 de fevereiro de 2013 15:53, Armando Barsotini Neto <
> > > >> > > > address@hidden> escreveu:
> > > >> > > >
> > > >> > > > > **
> > > >> > > > >
> > > >> > > > >
> > > >> > > > > Boa Tarde!
> > > >> > > > >
> > > >> > > > > Pessoal, estou utilzando o comando abaixo para pesquisar uma
> > > >> palavra
> > > >> > > > dentro
> > > >> > > > > de uma arquivo utilizando o "grep -i" (não sensitivo):
> > > >> > > > >
> > > >> > > > > find . | xargs grep -i "string"
> > > >> > > > >
> > > >> > > > > Porém, ele faz a varredura no servidor inteiro e isso demora
> > > >> muito...
> > > >> > > > teria
> > > >> > > > > como limitar essa busca em um determinado diretório e seus
> > > >> > > subdiretórios?
> > > >> > > > > Agradeço!
> > > >> > > > >
> > > >> > > > > Att,
> > > >> > > > >
> > > >> > > > > Armando Barsotini Neto
> > > >> > > > >
> > > >> > > > > Linux User # 503670
> > > >> > > > > Ubuntu User # 30175
> > > >> > > > >
> > > >> > > > > [As partes desta mensagem que não continham texto foram
> > > removidas]
> > > >> > > > >
> > > >> > > > >
> > > >> > > > >
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > > > --
> > > >> > > > Rafael Henrique da Silva Correia
> > > >> > > > http://abraseucodigo.com.br
> > > >> > > >
> > > >> > > > Bacharel em Ciência da Computação
> > > >> > > > Administrador de Sistemas Linux
> > > >> > > > Certificado pela LPIC - 101 http://www.lpi.org/>
> > > >> > > > Certificado Novell (CLA)
> > > >> http://www.novell.com/training/certinfo/cla/>
> > > >> > > >
> > > >> > > >
> > > >> > > > [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: address@hidden
> > > >> > > > ----------------------------------------------------------
> > > >> > > > 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
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > >
> > > >> > > [As partes desta mensagem que não continham texto foram
> removidas]
> > > >> > >
> > > >> > >
> > > >> > >
> > > >> >
> > > >> >
> > > >> >
> > > >> > --
> > > >> > []'s
> > > >> > Alfredo Casanova
> > > >> > Linux User #228230
> > > >> > msn: address@hidden
> > > >> > tel: +55 61 9655 9619
> > > >> >
> > > >> >
> > > >> > [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: address@hidden
> > > >> > ----------------------------------------------------------
> > > >> > 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
> > > >> >
> > > >> >
> > > >> >
> > > >>
> > > >> [As partes desta mensagem que não continham texto foram removidas]
> > > >>
> > > >>
> > > >>
> > > >
> > >
> > >
> > > --
> > > []'s
> > > Alfredo Casanova
> > > Linux User #228230
> > > msn: address@hidden
> > > tel: +55 61 9655 9619
> > >
> > >
> > > [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: address@hidden
> > > ----------------------------------------------------------
> > > 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
> > >
> > >
> > >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
>
> [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: address@hidden
> ---------------------------------------------------------------------
> 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
>
>
>


-- 
Rafael Henrique da Silva Correia
http://abraseucodigo.com.br

Bacharel em Ciência da Computação
Administrador de Sistemas Linux
Certificado pela LPIC - 101 <http://www.lpi.org/>
Certificado Novell (CLA) <http://www.novell.com/training/certinfo/cla/>


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



reply via email to

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