[OT] Shell script

6 respostas
smota

Olá pessoal,

Estou trabalhando em um HPUX e tenho um processo rodando que fica mais ou menos com a seguinte linha “/u05/programs/myapp -p proc -c …”

Tenho então um script shell que extrai o argumento do -p e conta quantos processos tem (a idéia é ter só um) e se não tiver nenhum executa um script que inicia a aplicação.

pc=`ps -e -o pid,args | grep /u05/programs/integracaoSGN/integracaoSGN | grep -v grep | tr -s " " | cut -f4 -d " " | grep -xc amex` if [ ${pc} -eq 0 ] then /u05/programs/run echo $(date) echo "O processo foi inicializado" fi

Tudo funciona que é uma beleza por um tempo, bom tempo … mas em um momento qualquer o teste if [ ${pc} -eq 0 ] nem liga e retorna true iniciando outra seção (executa o run).

Alguem já viu isso e tem alguma idéia?

6 Respostas

louds

Não seria mais facil usar daemontools pra isso?

smota

Heeeeein? O que? Onde? Quando? Como?

:roll:

rodrigousp

Legal… (eu também não entendi a história de daemontools).
Mas, que tal saber porque o teste está retornando positivo …

pc=`ps -e -o pid,args | grep /u05/programs/integracaoSGN/integracaoSGN | grep -v grep | tr -s " " | cut -f4 -d " " | grep -xc amex` 
        if [ ${pc} -eq 0 ] 
        then 
                /u05/programs/run 
                echo $(date) 
                echo "O processo foi inicializado"
                pcline = $(ps -e - o pid, args)
                echo $(pcline)
        fi

não é melhor ?

louds

http://cr.yp.to/daemontools.html

smota

ressucitando o tópico … Louds …

Primeiro, valeu pela dica, to testando o danado aqui e é uma mão na roda.

Dúvida: Tem como fazer o nome dos logs roteados pelo multilog ficarem mais amigaveizinhos?!?

O tai64nlocal é só pro timestamp dentro do arquivo que eu não quero usar (meu app já coloca o timestamp) … mas os logs são consultados com frequencia e esse nome xarope dele vai complicar minha vida. como você faz? (não diga que mentalmente olha o timestamp e sabe todos os dados que eu vou me jogar da ponte!)

Mais algum comentário obscuro acerca desse punhado de aplicativos estranhos?!?

Valeu

soaresinfo

ao inves de vc usar

if [ ${pc} -eq 0 ]

porque não usa:

if (( ${pc} == 0))

eu nao estou com o livro agora mas acho que é == ou =, faz o teste
o (( )) é para teste matemático, procura o livro do randal michael:
Dominando Unix Shell Scripting, o livro é show 8)

Criado 10 de dezembro de 2003
Ultima resposta 23 de abr. de 2004
Respostas 6
Participantes 4