Novo no shell-script [RESOLVIDO]

1. Novo no shell-script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/04/2010 - 11:47h

Boa tarde a todos.
estou criando um script onde quero matar um determinado serviço se tiver levantado e levantar novamente e se ele nao tiver levantado quero levantalo.

o script é esse;

#!/bin/bash

PID=`pidof -s python`

if ["$PID" -eq "0"]; then

kill -9 $PID
/etc/cron.hourly/ImportRetag.bash
else
/etc/cron.hourly/ImportRetag.bash
fi


ele nao esta me dando o resultado desejado.
ele apenas levanta o serviço. ou seja se ele ja estiver levantado ele fica com varios serviços em execução cada vez que é rodado.

quando rodo o script acontece o seguinte erro.
./teste.bash: line 5: [8898: command not found

tbm gostaria de trocar de -eq para => mais nao sei como faço isso no shell-script sou novo nisso.
espero respostas.
obrigados amigos



  


2. Re: Novo no shell-script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/04/2010 - 11:57h

Você precisa dar um espaço entre '[ ]' e o "$PID" -eq "0"
Ja tentou usar o killall?

if [ "$PID" -eq 0 ]; then
killall python
/etc/cron.hourly/ImportRetag.bash
else
/etc/cron.hourly/ImportRetag.bash
fi

Para usar "=>", que nem em C, você precisa usar dois parênteses (( e ))

if ((PID == 0)); then
...


3. Re: Novo no shell-script [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 27/04/2010 - 13:42h

PID=`pidof -s python`
echo "PID $PID"
if [ `echo $PID |wc -c` = "1" ]; then
kill -9 $PID
/etc/cron.hourly/ImportRetag.bash
else
/etc/cron.hourly/ImportRetag.bash
fi



4. Re: Novo no shell-script [RESOLVIDO]

Ricardo Cardoso
ricardo cardoso

(usa Debian)

Enviado em 27/04/2010 - 14:39h

Em outro tópico parecido, um cologa aqui do VOL lembrou bem e eu não percebi.

Mas assim, concorda comigo que a identificação do PID é um número? então não pode usar ==, essa atribuição é apenas para strings, se vc quer fazer uma condição, comparação, etc com números tem que usar -eq, -ne, -gt, -lt etc...


5. Re: Novo no shell-script [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 27/04/2010 - 15:29h

Mas quando o processo não existe não é retornado zero ... apenas " ".


6. Re: Novo no shell-script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/04/2010 - 17:45h

Se você usar os parentêses duplo, os sinais '==', '<', '>', '<=', '=>' e '!=' são interpretados como na linguagem C
if ((PID == 0)); then

No caso, o $PID só retorna numeros inteiros, mas como tem o risco de o processo não existir, o melhor é fazer pelo modo normal
if [ "$PID" -eq "0" ]; then
...




7. Re: Novo no shell-script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/04/2010 - 19:40h

# so algarimos
PID=$(pidof -s python | sed 's/[^0-9]//g')

# se o comprimento da variavel que agora é só algarismos for maior que zero então...
if [ ${#PID} -gt 0 ]; then

kill -15 $PID
/etc/cron.hourly/ImportRetag.bash
else
/etc/cron.hourly/ImportRetag.bash
fi






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts