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

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

Re: [shell-script] Problemas com o IF


From: Tiago Peczenyj
Subject: Re: [shell-script] Problemas com o IF
Date: Wed, 11 May 2011 12:06:46 -0300

Ola claudio

Melhor ou pior é questão de ponto de vista. A rigor um if cmd1 | cmd2
| cmd3 ; pode trazer a expressividade necessária para olhar e
entender. Pessoalmente eu prefiro cmd1 | ... | cmdN && { } pois eu
olho e identifico qual cmd que sera responsável pela execução dos
comandos subsequentes.

quando vc tem varios pipes pode ser interessante também verificar o
array PIPESTATUS

pacman:xxx peczenyj$ true | false | true
pacman:xxx peczenyj$ echo ${PIPESTATUS[*]}
0 1 0

observe que o pipe do meio retornou 1

2011/5/10 Claudio Braz <address@hidden>:
> Boa noite Galera,
>
> Sou novato em linux e mexo em shell script mais por curiosidade mesmo..
> Eu dei uma lida no Papo de butequim e aprendi uns macetes legais lá e por
> isso vou arriscar um palpíte....
>
> Nao seria melhor colocar o "ps -ef |grep apache2 | grep -v grep" dentro do
> proprio "if" ???
> caso o programa esteja rodando vai retornar 0 e satisfazer a condição do IF,
> e caso nao tenha retorna 1 e nao satisfaz o IF.
>
>
>
> Em 10 de maio de 2011 18:47, MrBiTs <address@hidden> escreveu:
>
>>
>>
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA256
>>
>>
>> On 05/10/2011 18:10 , address@hidden wrote:
>> > Prezados,
>> >
>> > Sou novo no forum e novo no mundo do Shell Script, mas estou adorando a
>> experiência de programar, estou estudando via foruns por este motivo tenho
>> muitas duvidas, estou tentando montar um Script que monitore algum serviço e
>> se estiver parado que starte novamente, neste caso o Apache, se possível,
>> poderiam me ajudar com o motivo desse pequeno e humilde script não
>> funcionar?
>> >
>> > #!/bin/bash
>> > TESTE=`ps -ef |grep apache2 | grep -v grep |awk {'print $2'}`
>> > if [ $TESTE-z ]
>> > then
>> > sudo /etc/init.d/apache2 stop
>> > sudo /etc/init.d/apache2 start
>> > sleep 15
>> > fi
>> >
>> > Se eu coloco o 2>&- no final do script ele nem da erro.
>> >
>> > Agradeço a atenção.
>> >
>> > Carlos
>>
>> Vamos começar pelo simples. Você sabe o que significa 2> ? Significa que
>> você está direcionando STDERR para algum lugar. Então, é
>> natural que você não veja mas mensagens de erro.
>>
>> Eu faço coisas parecidas em uns servidores safados por aí. O seu teste está
>> errado. Você viu qual é o resultado do seu ps com os
>> pipes ? Ele vai colocar na variável TESTE uma série de PIDs e o test (
>> alias [ ) dá um erro de too many arguments, erro esse que
>> você poderia ter reportado, já que ninguém tem bola de cristal por aqui.
>> Mas esses gurus sabem de tudo e passam o dia só respondendo
>> e-mail, então está tudo certo com o mundo.
>>
>> Eu utilizaria uma construção mais simples, com o pidof. Além disso, o teste
>> está errado porque o -z está após a variável que você
>> quer testar, quando ele deveria vir antes. Então algo assim:
>>
>> TESTE=$(pidof apache2)
>>
>> if [ -z "$TESTE"] ; then
>> resto do seu script
>>
>> Proteja a variável TESTE entre aspas, para não ter o erro de too many
>> arguments.
>>
>> - --
>>
>> LLAP
>>
>> .0. MrBiTs - address@hidden
>> ..0 GnuPG -
>> http://keyserver.fug.com.br:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
>> 000 http://www.mrbits.com.br
>>
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v1.4.10 (Darwin)
>>
>> iQEcBAEBCAAGBQJNybKLAAoJEG7IGPwrPKWrPQIH/jhTlsXx4AveJJg23SVxB0hj
>> 3tTGg5Ns+UzTsktK13FcacWlhvRQk0YYx/uer0ryRhJQQ3bUAJQ0HIgaSZDtMJ51
>> v7qw3fLlA0tF8M6QPqc+JZ61qCBbYuFzzJE7SiqwqrgyjahCtqgkieogwQId7yQS
>> scymjVwMfsgP5V2MVQBYDBU46Pq46zK/N8JE274MYn8rjjwEwQvAuSp75vhQLAAY
>> VUmERV/skqe9A+kzNtbmqqJXnaEgYXO5euBqmAWnFlj+WKLGNAbvADmZwMTnSwgC
>> kmXDLs6HyNZvFvTruH7E2zLgbudwBJn4UhgVQAPofTyZT/gPZdXWxLLk0kdAc+M=
>> =KI11
>> -----END PGP SIGNATURE-----
>>
>>
>
>
> [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
>
>
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


reply via email to

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