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: MrBiTs
Subject: Re: [shell-script] Problemas com o IF
Date: Tue, 10 May 2011 18:47:55 -0300
User-agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.15) Gecko/20110303 Lightning/1.0b2 Thunderbird/3.1.9

-----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-----


reply via email to

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