Erro em Script

1. Erro em Script

Caio Mateus
caiofajardo

(usa Outra)

Enviado em 02/09/2014 - 08:00h

Bom dia galera, estou com um problema em um script que é usado para ligar, reiniciar e parar alguns processos.
O script inicia os processos normalmente mas quando peço para reiniciar ou parar eles um erro é retornado que o processo não existe.
Já tentei algumas alterações e até fazer um script só com a função Parar mas mesmo assim o erro persiste, se alguém puder me ajudar abaixo segue o script.

#!/bin/sh
# Script criado por rowla
# Modificado por shazeya@syafi.com (NL101541)
# Traduzido e Incrementado por Chiron (diegopinheiro.sjc@hotmail.com)
PATH=./:$PATH
L_SRV=login-server
C_SRV=char-server
M_SRV=map-server
print_start() {
echo "Cronus Iniciando..."
echo "Checando os Arquivos..."
}
check_files() {
for i in ${L_SRV} ${C_SRV} ${M_SRV}
do
if [ ! -f ./$i ]; then
echo "$i não existe ou está corrompido"
echo "Recompile os arquivos."
exit 1;
fi
done
echo "Checagem Completa"
}
case $1 in
'Ligar')
print_start
check_files
exec ./${L_SRV}&
echo $! > .${L_SRV}.pid
exec ./${C_SRV}&
echo $! > .${C_SRV}.pid
exec ./${M_SRV}&
echo $! > .${M_SRV}.pid
;;
'Atualizar')
if [ -f /usr/bin/yum ]; then
yum update -y
yum upgrade -y
else
apt-get update -y
fi
;;
'Parar')
for i in .${L_SRV}.pid .${C_SRV}.pid .${M_SRV}.pid
do
if [ -e ./$i ]; then
kill $(cat $i)
rm $i
fi
done
;;
'Reiniciar')
$0 Parar
$0 Ligar
;;
*)
echo "Uso: start { Ligar | Parar | Reiniciar | Atualizar }"
;;
esac


  


2. Re: Erro em Script

luiz
luizsouza99

(usa Linux Mint)

Enviado em 04/09/2014 - 13:32h

quando o pid passa de uma quantidade, ele passa a ter mais um algarismo e menos um espaço. ou seja, o seu comando que funcionava antes agora pega o valor errado.

se for seu caso vc pode tentar usar o killall + nome do programa, assim vc não passa pelo pid.


3. Re: Erro em Script

Paulo
paulo1205

(usa Ubuntu)

Enviado em 05/09/2014 - 08:58h

Investigue, usando o comando ps se o pid do processo corresponde ao pid que está no arquivo correspondente. Se o processo se transformar por cinta própria num daemon, o pid do arquivo certamente não vai bater com o do processo que ficou no ar.

Se for esse o caso, use o killall para matar o processo pelo nome.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts