Função If não esta funcionando no shell script [RESOLVIDO]

1. Função If não esta funcionando no shell script [RESOLVIDO]

Glauco Perucchi
glaucoperucchi

(usa Debian)

Enviado em 25/10/2011 - 21:35h

Boa noite pessoal do VOL!

Estou com um problema no script abaixo que não consigo localizar o erro,

Preciso que o grep do ps aux pegue somente a palavra sinprobatch.php e grave no $resp
então o if verifica se a palavra sinprobatch.php já existe, e caso existe ele informara como Processo existente e não executara o programa, só que ele não esta fazendo isto
e não estou consiguindo achar o problema



#!/bin/sh
resp=`ps aux | grep sinprobatch.php | tr -s " " | cut -d " " -f12`
echo $resp
cd /home
if [ $resp -eq sinprobatch.php ]; then
echo "Processo existente"
else
php sinprobatch.php &

fi


Alguem pode me ajudar?

Obrigado a todos!


  


2. Re: Função If não esta funcionando no shell script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 25/10/2011 - 21:46h

Teste no seu terminal o comando:

ps -aux | grep -o nome_do_arquivo.php

veja se vai retornar o que você quer que seja atribuído a $resp
Abraços


3. Re: Função If não esta funcionando no shell script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 25/10/2011 - 21:49h

Outra coisa, troque o
if [ $resp -eq sinprobatch.php ]; then
por
if [ $resp == 'sinprobatch.php' ]; then

o -eq necessita de um operador do tipo inteiro, o que não casa na sentença que você precisa.



4. Re: Função If não esta funcionando no shell script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/10/2011 - 04:10h

Troque:
grep sinprobatch.php 

Por:
grep 'sinprobatch\.php' 



5. Re: Função If não esta funcionando no shell script [RESOLVIDO]

Glauco Perucchi
glaucoperucchi

(usa Debian)

Enviado em 26/10/2011 - 08:25h

rai3mb fiz as alterações e o grep pegou só a palavra certinho, alterei o if também e ao executar o script da o seguinte erro

sinprobatch.php
[: sinprobatch.php: unexpected operator

e se executo mais uma vez aparece isso:

sinprobatch.php sinprobatch.php
[: sinprobatch.php: unexpected operator


6. Re: Função If não esta funcionando no shell script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 26/10/2011 - 09:28h

if [ $resp == 'sinprobatch.php' ]; then 


não deve ter espaço entre o colchete '[' e a próxima instrução e também entre ']', qualquer coisa poste como você digitou, pois a priori não há porque apresentar erro na instrução acima.
Abraços


7. Re: Função If não esta funcionando no shell script [RESOLVIDO]

Glauco Perucchi
glaucoperucchi

(usa Debian)

Enviado em 26/10/2011 - 10:12h

O erro não ocorre mais, na segunda vem que executo, o echo $resp aparece na tela como "sinprobatch.php sinprobatch.php" só que não aparece o echo "Processo existente" ele executa o php sinprobatch.php & novamente

#!/bin/sh
resp=`ps aux | grep -o sinprobatch.php`
echo $resp
cd /root
if [ "$resp" = "sinprobatch.php sinprobatch.php" ];
then
echo "Processo existente"
else
php sinprobatch.php &

fi



8. Re: Função If não esta funcionando no shell script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 26/10/2011 - 10:41h

o conteúdo de $resp está saindo como? apenas com o 'sinprobatch.php'

o código não deve ficar apenas:

#!/bin/sh
resp=`ps aux | grep -o sinprobatch.php`
echo $resp
cd /root
if [ "$resp" = "sinprobatch.php" ];
then
echo "Processo existente"
else
php sinprobatch.php &

fi



9. Re: Função If não esta funcionando no shell script [RESOLVIDO]

Glauco Perucchi
glaucoperucchi

(usa Debian)

Enviado em 26/10/2011 - 10:50h

O $resp esta saindo como sinprobatch.php sinprobatch.php


10. Re: Função If não esta funcionando no shell script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/10/2011 - 11:00h


#!/bin/sh
# author Paulo Riceli Dias Lelis
# more http://sekysu.blogspot.com
_TTIME='10s'
cd /root

function _recursive()
{
_RESP=$(ps aux | grep -o sinprobatch.php | grep ' php ')
echo ${_RESP}
if [ "${_RESP}" == 'sinprobatch.php' ]
then
echo -e "Processo existente\n Esperando ${_TTIME} segundos para a próxima execução deste script"
sleep ${_TTIME}

else
php sinprobatch.php
if
_recursive
}

_recursive



11. Re: Função If não esta funcionando no shell script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 26/10/2011 - 11:11h

Então duas opções:

if [ "$resp" = "sinprobatch.php sinprobatch.php" ];

ou:

resp=`ps aux | grep -o sinprobatch.php | cut -d' ' -f1`
echo $resp
cd /root

if [ "$resp" = "sinprobatch.php" ];


12. Re: Função If não esta funcionando no shell script [RESOLVIDO]

Glauco Perucchi
glaucoperucchi

(usa Debian)

Enviado em 26/10/2011 - 11:58h

./.ronin deu erro
./batch.sh: 6: Syntax error: "(" unexpected

rai3mb
Se o if só tiver um "sinprobatch.php" ele sempre vai marcar como "Processo existente" pois o ps aux pegao comando grep
root 4383 27.1 0.6 19228 12048 0 R 11:22AM 0:03.25 php sinprobatch.php
root 4387 0.0 0.1 5648 2716 0 RV+ 11:22AM 0:00.00 grep sinprobatch.php

então ele sempre vai ter um rodando o php ou não por isso que no if botei "sinprobatch.php sinprobatch.php"



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts