Bonjour, j'ai un petit probleme avec init.
J'ai ecris un script pour start/stop un serveur q3. Il marche bien dans le sens ou quand je fais un /etc/init.d/q3-server start/stop/restart il fait ce qu'on attends de lui.
#!/bin/sh
name="q3-server1"
BASEPATH="/fichiers/quake3-server"
Q3DED="$BASEPATH/q3ded-1.32b"
ip="192.168.1.100"
port="27960"
USER="q3ded"
SUDO="sudo -u $USER"
CONFIG="$name.cfg"
PID="/var/run/q3ded/$name.pid"
SCREEN="screen -A -m -d -S"
FS_GAME="+set fs_game osp"
DEDICATED="+set dedicated 1"
HUNKMEGS="+set com_hunkMegs 32"
function startq3ded()
{
echo running $name server on $ip:$port
$SUDO $SCREEN $name $Q3DED $FS_GAME +set fs_basepath $BASEPATH $DEDICATED $HUNKMEGS +set net_ip $ip +set net_port $port +exec $CONFIG
$SUDO screen -list | grep $name | grep -v Dead | awk '{print $1}' | sed s/.$name//g > $PID
$SUDO screen -wipe > /dev/null
sleep 1
$SUDO screen -list | grep $name
}
case "$1" in
start)
if [ -e $PID ]; then
echo "$PID existe deja ... Le serveur est-il en cours d'execution ?";
if [ -d /proc/`cat $PID` ]; then sleep 1 && echo "" && echo "$name a l'air d'etre en cours d'execution , exit" exit 1
else sleep 1 && echo "" && echo "On dirait que le process `cat $PID` n'existe pas , démarrage du serveur quake 3" rm -rf $PID
startq3ded
fi
else startq3ded
fi
;;
stop)
if [ -e $PID ]; then
echo "Arret du serveur $name"
kill `cat $PID`
rm -rf $PID
sleep 3
else
echo "$PID n'existe pas, le serveur est-il démaré ? EXIT"
exit 7
fi
;;
restart)
$0 stop && sleep 2 && $0 start || exit 1
;;
status)
$SUDO screen -list | grep $name
if [ -e $PID ]; then
echo "$name est en cours d'execution"
exit 0
else
echo "$name ne fonctionne pas"
exit 3
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 2
esac
exit 0
|
Mais lors du reboot de la machine, le serveur q3 n'est pas arrété propement car le PID n'est pas effacé, et au démarage il n'est pas lancé non plus et je ne comprends pas pourquoi. Pourtant les liens symboliques sont correct dans /etc/rc*.d .
C'est comme si au boot et au halt , init ne fait pas de /etc/init.d/q3-server start/stop