Startseite > .:: Rund um CoD ::. > CoD - Serverhilfe > Start-Script für Linux-Game-Server

Start-Script für Linux-Game-Server

Veröffentlicht durch den Opferlamm-Clan


Gepostet im Forum des OL-Clans von Jg511 DJKnuffel - http://www.jgbtl511.de

Bei Fragen bitte hier melden: KLICK

 

Beispiele für Call of Duty2 gelten analog für alle bisher erschienen Call of Duty Teile.

Startscript mit Screen

#! /bin/sh
#########################################################
# STARTSCRIPT FÜR EINEN Call of Duty 2 SERVER #
#########################################################
# Benutzung auf eigene Gefahr!!!!!!!!!!! #
# SCREEN muss auf dem Server installiert sein! #
#########################################################
# Vars: #
# G_USER Username #
# NAME Screen-Name #
# DESC Server-Beschreibung #
# PARAMS Start-Parameter #
# DIR HLDS Directory (absolut) #
# SCRIPT Serverstart-Script #
# DAEMON Daemon #
#########################################################
# OPTIONS: (start|stop|restart|status) #
#########################################################

################## User ################################
# Username unter dem der Server laufen soll
# NICHT als root laufen lassen
G_USER=games
################## Vars #################################
# Screen NAME
# Attach Screen : # screen -r NAME
# Detach Screen : # [CTRL]+[A]; [D]
# Don't press [CTRL]+[C] it will terminate screen
NAME=extcod2
################## Server Description ###################
# Single Word DESC=myserver
# Multiple Words DESC="This is my Server"
DESC="Call of Duty 2 Server"
################## Parameter ############################
# CAN USE: +servercfgfile server.cfg OR +exec server.cfg
PARAMS="+set dedicated 2 +exec deineserver.cfg"
################## Directory ############################
# Pfad zum cod2-Directory (absolute)
DIR=/srv/games/cod2
################## DAEMON ##############################
# Hier das Startscript platzieren, normalerweise hlds_run
SCRIPT=cod2_lnxded
########################################################
#### NICHTS UNTER DIESER ZEILE VERÄNDERN ! ! ! ####
########################################################

DAEMON=$DIR/$SCRIPT

case "$1" in
start)
if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
then
echo "$DESC läuft bereits!"
else
echo "Starte $DESC "
su $G_USER -c "cd $DIR; screen -d -m -S $NAME $DAEMON $PARAMS"
fi
;;

stop)
if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
then
echo -n "Stoppe $DESC "
kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
echo " ... done."
else
echo "Kein laufenden $DESC gefunden!"
fi
;;

restart)
if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
then
echo -n "Stoppe $DESC "
kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
echo " ... done."
else
echo "Kein laufenden $DESC gefunden!"
fi

echo -n "Starte $DESC"
su $G_USER -c "cd $DIR; screen -d -m -S $NAME $DAEMON $PARAMS"
echo " ... done."
;;

status)
ps aux | grep -v grep | grep cod > /dev/null
CHECK=$?
[ $CHECK -eq 0 ] && echo "$DESC ist online" || echo "$DESC ist offline"
;;
*)

echo "Benutze: $0 {start|stop|restart|status}"
exit 1
;;
esac

exit 0

Wo ihr das Script dann hinpackt auf eurem Root ist egal, da sowieso ein Wechsel des Users und Verzeichnisses erfolgt.
Das Script muss entweder CHMOD 500 (nur Besitzer kann ausführen) oder auch 775 haben.

Mögliche Aufrufe:

./server.sh start
./server.sh restart
./server.sh stop
oder
./server.sh status

Startscript mit Childprozess

Angepasst von KK - Ursprung unbekannt. Creative Commons License
This work is in the Public Domain.
#!/bin/sh
# Benutzer Kram
PORT="28960"
##### Das Startscript sollte im Namen den Port haben, also start28000, start28960 etc..
HOMEDIR="/home/benutzer/.cod2-28960"
BASEDIR="/home/benutzer/games/cod2"
MOD="ios"
CONFIG="cod2clanserver.cfg"

# Log und Pid
LOGFILE=$HOMEDIR/server.log
INITPIDFILE=$HOMEDIR/init.pid
PIDFILE=$HOMEDIR/cod.pid

# Ab hier wirds spannend
COMMAND="cod2_lnxded +set fs_basepath $BASEDIR/ +set fs_homepath $HOMEDIR/ +set
fs_game $MOD +set dedicated 1 +set net_port $PORT +exec $CONFIG +map_rotate"

case "$1" in
start)
if test -f $INITPIDFILE ; then
echo "Startscript lauft schon";
elif test -f $PIDFILE ; then
echo "Server laeuft schon";
echo "Nix zu tun, Probier mal die Option check";
echo "Sollte er ganz sicher nicht laufen von Hand die init.pid und cod.pid aus $HOMEDIR/pid loeschen.";
else
echo Starte Server Port $PORT
$0 fork > $HOMEDIR/output$PORT.log 2>$HOMEDIR/output$PORT.log &
echo $! > $INITPIDFILE
disown
fi
;;
stop)
if test -f $INITPIDFILE ; then
if ps -p `cat $INITPIDFILE` | grep start$PORT 1> /dev/null 2> /dev/null ; then
echo killing start$PORT
kill -TERM `cat $INITPIDFILE` 1> /dev/null 2> /dev/null
sleep 2
kill -9 `cat $INITPIDFILE` 1> /dev/null 2> /dev/null
fi
rm $INITPIDFILE
else
echo Finde das Startscript nicht.
fi
if test -f $PIDFILE ; then
if ps -p `cat $PIDFILE` | grep cod2_lnxded 1> /dev/null 2> /dev/null ; then
echo killing cod2_lnxded
echo nun ist Schluss mit Zocken
kill -TERM `cat $PIDFILE` 1> /dev/null 2> /dev/null
sleep 2
kill -9 `cat $PIDFILE` 1> /dev/null 2> /dev/null
fi
rm $PIDFILE
else
echo Hab den Server nicht gefunden
echo Nix zu tun
fi
;;
restart)
$0 stop
$0 start
;;
check)
## Entfernt die PID wenn der Server nicht leuft, ist aber unsicher bei mehreren Servern.
if test -f $INITPIDFILE ; then
if ! ps -p `cat $INITPIDFILE` | grep start$PORT $1> /dev/null 2> /dev/null ; then
if test -f $PIDFILE ; then
if ps -p `cat $PIDFILE` | grep ucc 1> /dev/null 2> /dev/null ; then
kill -TERM `cat $PIDFILE` 1> /dev/null 2> /dev/null
sleep 2
kill -9 `cat $PIDFILE` 1> /dev/null 2> /dev/null
fi
rm $PIDFILE
fi
rm $INITPIDFILE
$0 start > /dev/null
fi
else
if test -f $PIDFILE ; then
if ps -p `cat $PIDFILE` | grep cod2_lnxded 1> /dev/null 2> /dev/null ; then
kill -TERM `cat $PIDFILE` 1> /dev/null 2> /dev/null
sleep 2
kill -9 `cat $PIDFILE` 1> /dev/null 2> /dev/null
fi
rm $PIDFILE
fi
$0 start > /dev/null
fi
;;
fork)
while [ true ] ; do
$BASEDIR/$COMMAND &
echo $! > $PIDFILE
wait
echo "sollte jetzt laufen."
done
;;
*)
echo "Usage: $0 {start|stop|restart|check}"
;;