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