Hallo hier ein Start script für FEAR,
damit sollte das Screen Problem gelöst sein.
Da es mit absoluten Pfaden arbeitet kann es auf dem Server liegen wo Ihr wollt, FEAR Startordner ist natürlich empfohlen.
Ich übernehme keine Garantie oder Gewährleistung - versteht sich von selbst.
Benutzung:
Script in eine leere Datei mit Namen fear.sh kopieren.
Absoluten Pfade in DIR=/home/.../FEAR eingeben
eine leere Datei mit Namen fearstart.log erzeugen
Absoluten Pfad in LOGDIR=/home/..../ eingeben
Aufruf:
./fear.sh start -> startet den FEAR Server
./fear.sh stop -> stoppt den FEAR Server
./fear.sh restart -> restart des FEAR Servers
./fear.sh status -> gibt an ob der Server läuft (Prozess) oder nicht
Sollten mehrere FEAR Server laufen kann die Datei fear.sh auch umbenannt werden. Der Aufruf ändert sich entsprechend.
da der Prozess von FEAR schwierig zu KILLEN ist, bitte ich um Rückmeldung ob es bei euch genauso gut Funktioniert wie bei uns.
So nun zum Script......
- Code: Alles auswählen
#! /bin/sh
#########################################################
# STARTSCRIPT FÜR EINEN F.E.A.R. Combat SERVER #
#########################################################
# Benutzung auf eigene Gefahr!!!!! #
# SCREEN muss auf dem Server installiert sein! #
#########################################################
# Vars: #
# NAME Screen-Name #
# DESC Server-Beschreibung #
# PARAMS Start-Parameter #
# DIR Directory (absolut) #
# SCRIPT Serverstart-Script #
# DAEMON Daemon #
# LOGDIR Log Directory (absolut)#
# LOGDAT Log Datei Name
#########################################################
# OPTIONS: (start|stop|restart|restartdaily|status) #
#########################################################
################## User ################################
# Es wird empfohlen NICHT als root laufen lassen
################## Vars #################################
# Screen NAME
# Attach Screen : # screen -r NAME
# Detach Screen : # [CTRL]+[A]; [D]
# Don't press [CTRL]+[C] it will terminate screen
NAME=fearalfa
################## Server Description ###################
# Single Word DESC=myserver
# Multiple Words DESC="This is my Server"
DESC="F.E.A.R. Pub-Server"
################## Parameter ############################
# CAN USE: +servercfgfile server.cfg OR +exec server.cfg
# bleibt in der Regel frei
PARAMS=""
################## Directory ############################
# Pfad zum FEAR-Directory (absolute) ohne "/" am Ende
DIR=/home/.../FEAR
################## DAEMON ##############################
# Hier das Startscript platzieren, normalerweise fearserver.bin
# ohne "/" am Anfang
SCRIPT=fearserver.bin
################## LOGDATEI ##############################
#Falls eine LOG DATEI gewünscht wird muss diese DATEI von Hand
#als leere Datei erstellt werden z.B. fearstart.log
################## LogDatei PFad ##############################
# Hier den Pfad zur LogDatei (falls LogDatei gewünscht) absolut angeben
# ohne / am Ende
LOGDIR=/home/..../
################## LogDatei ##############################
# Hier den Namen der LogDatei angeben z.B. start.log
# ohne / am Anfang
LOGDAT=fearstart.log
##############################################################
#### NICHTS UNTER DIESER ZEILE VERÄNDERN ! ! ! ####
# Wenn Du weisst, was Du tust kannst Du tun was du willst! #
##############################################################
start=`date '+%H:%M on %d/%m/%y'`
DAEMON=./$SCRIPT
case "$1" in
start)
if [[ `screen -ls | grep $NAME` ]]
then
echo "$DESC läuft bereits!"
else
echo "Starte $DESC "
cd $DIR
export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
screen -dmS $NAME $DAEMON $PARAMS
#nächte Zeile verwenden zum Loggen (Datei muss von Hand erstellt werden, wenn noch nicht vorhanden)
echo "User Start F.E.A.R. Pub-Server ->started@ $start" >>$LOGDIR/$LOGDAT
echo "Starte $DESC -> Done "
fi
;;
stop)
if [[ `screen -ls | grep $NAME` ]]
then
echo -n "Stoppe $DESC "
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
pid=$!
kill -s 9 -kill $pid `ps -A | grep $SCRIPT |awk -F . '{print $1}'|awk '{print $1}'`
wait $pid
#nächte Zeile verwenden zum Loggen (Datei muss von Hand erstellt werden, wenn noch nicht vorhanden)
echo "User Stop $DESC ->stoped@ $start" >>$LOGDIR/$LOGDAT
echo " ... done."
else
echo "Kein laufenden $DESC gefunden!"
fi
;;
restart)
if [[ `screen -ls | grep $NAME` ]]
then
echo -n "Stoppe $DESC "
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
pid=$!
kill -s 9 -kill $pid `ps -A | grep $SCRIPT |awk -F . '{print $1}'|awk '{print $1}'`
wait $pid
#nächte Zeile verwenden zum Loggen (Datei muss von Hand erstellt werden, wenn noch nicht vorhanden)
echo "User Stop $DESC ->stoped@ $start" >>$LOGDIR/$LOGDAT
echo " ... done."
else
echo "Kein laufenden $DESC gefunden!"
fi
if [[ `screen -ls | grep $NAME` ]]
then
echo "$DESC läuft bereits!"
else
echo "Starte $DESC "
cd $DIR
export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
screen -dmS $NAME $DAEMON $PARAMS
#nächte Zeile verwenden zum Loggen (Datei muss von Hand erstellt werden, wenn noch nicht vorhanden)
echo "User Start $DESC ->started@ $start" >>$LOGDIR/$LOGDAT
echo "Starte $DESC -> Done "
fi
;;
restartdaily)
if [[ `screen -ls | grep $NAME` ]]
then
echo -n "Stoppe $DESC "
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
pid=$!
kill -s 9 -kill $pid `ps -A | grep $SCRIPT |awk -F . '{print $1}'|awk '{print $1}'`
wait $pid
#nächte Zeile verwenden zum Loggen (Datei muss von Hand erstellt werden, wenn noch nicht vorhanden)
echo "Daily Stop $DESC ->stoped@ $start" >>$LOGDIR/$LOGDAT
echo " ... done."
else
echo "Kein laufenden $DESC gefunden!"
fi
if [[ `screen -ls | grep $NAME` ]]
then
echo "$DESC läuft bereits!"
else
echo "Starte $DESC "
cd $DIR
export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
screen -dmS $NAME $DAEMON $PARAMS
#nächte Zeile verwenden zum Loggen (Datei muss von Hand erstellt werden, wenn noch nicht vorhanden)
echo "Daily Restart $DESC ->restarted@ $start" >>$LOGDIR/$LOGDAT
echo "Starte $DESC -> Done "
fi
;;
status)
ps aux | grep -v grep | grep $DAEMON > /dev/null
CHECK=$?
[ $CHECK -eq 0 ] && echo "$DESC is UP" || echo "$DESC is not RUNNING!!!"
;;
*)
echo "Benutze: $0 {start|stop|restart|restartdaily|status}"
exit 1
;;
esac
exit 0
---
Der Aufruf ./fear.sh restartdaily ist für unseren crontab um eine Unterscheidung in der Log Datei zu haben, da wir den Server täglich mit crontab restarten.
viel Spass damit
