renato_pacheco
(usa Debian)
Enviado em 15/01/2014 - 11:39h
Cara, fiz os testes aqui e consegui fazer funcionar. O problema, d fato, nem era do script do cron q vc criou, mas do PID. Quando vc executa o cs2d, ele não cria o PID, por isso q sempre dava errado (pelo menos nos testes q fiz aqui). Pra evitar o problema, vc vai ter q criar um script de serviço pra vc iniciar, parar, reiniciar etc. Vou deixar a parada pra vc aqui:
#!/bin/bash
### BEGIN INIT INFO
# Provides: cs2d_dedicated
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Counter Strike 2D - Server
### END INIT INFO
#######################################
# Counter Strike 2D - Server #
# by: Renato Pacheco #
#######################################
PIDFILE=/home/CS2D/cs2d_dedicated.pid
iniciar() {
. /home/CS2D/cs2d_dedicated & 2>&1 /dev/null
pidof cs2d_dedicated > $PIDFILE
}
parar() {
kill $(cat $PIDFILE)
rm $PIDFILE
}
estado() {
if [[ -e $PIDFILE ]] && [[ $(cat $PIDFILE) == $(pidof cs2d_dedicated) ]]; then
echo "Servidor Counter Strike em execução!"
exit 99
else
echo "Servidor Counter Strike parado!"
fi
}
case $1 in
start)
iniciar
echo "Servidor Counter Strike iniciado!" ;;
stop)
parar
echo "Servidor Counter Strike parado!" ;;
restart)
parar
iniciar
echo "Servidor Counter Strike reiniciado!" ;;
status)
estado
*)
echo "Usage: $0 {start|stop|restart|status}" ;;
esac
Coloque esse script no /etc/init.d, com permissão de execução. Depois, cadastre-o para ser executado automaticamente pelo sistema, com o comando:
update-rc.d cs2d.sh defaults
Se vc quiser monitorar se o seu servidor realmente está online e, se cair, ele ser executado novamente, coloque esse script abaixo (aquele q a gente tava brigando) no cron:
#!/bin/bash
PIDFILE="/home/CS2D/cs2d_dedicated.pid"
if [[ -e $PIDFILE ]] && [[ $(cat $PIDFILE) == $(pidof cs2d_dedicated) ]]; then
exit 99
else
invoke-rc.d cs2d.sh start 2>&1 /dev/null
fi
Aqui deu certo assim...