MisterMan
New Member
Hallo zusammen,
derzeit versuche ich einem Script, welcher eine Serveranwendung starten, bei Crash neustarten und restarten soll, für meinen Bedarf an zu passen. Der script kommt nicht von mir, daher auch die Probleme mit der Anpassung (verstehe nicht viel von shellscripting).
Mein Problem welches ich habe, wenn ich einen Cronjob definiere, welcher alle 5 Minuten /etc/init.d./a3server start ausführt, passiert einfach garnix. Allerdings sollte der Script eigentlich so sicherstellen, dass der Server läuft. Weiterhin funktioniert Restart und Stop nicht richtig, sobald der Server gestoppt wird, schließt sich die gesamte Konsole.
Kann hier jemand helfen?
Vielen Dank!
Gruß
derzeit versuche ich einem Script, welcher eine Serveranwendung starten, bei Crash neustarten und restarten soll, für meinen Bedarf an zu passen. Der script kommt nicht von mir, daher auch die Probleme mit der Anpassung (verstehe nicht viel von shellscripting).
Code:
#!/bin/bash
### BEGIN INIT INFO
# Provides: a3server
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Should-Start: mysql
# Should-Stop: mysql
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: ArmA 3 init.d Script by Flodding
### END INIT INFO
#
#=======================================================================
#======== CONFIGURATION PARAMETERS ========
#======== MUST BE EDITED MANUALLY TO FIT YOUR SYSTEM PARAMETERS ========
#=======================================================================
USERNAME=user
ARMA_DIR='/srv/server/user'
CONFIGFOLDER=${ARMA_DIR}
CONFIG=${CONFIGFOLDER}/server.cfg
CFG=${CONFIGFOLDER}/basic.cfg
PROFILES=${ARMA_DIR}/user
PORT=2302
PIDFILE=${ARMA_DIR}/${PORT}.pid
SERVICE=arma3server
BACKUPPATH=/home/${ARMA_DIR}/backup
CPU_COUNT=12
EX_THREADS=7
BACKUPDAYS=3
MODS="\"@extDB;@life_server\""
OPTIONS="-port=${PORT} -pid=${PIDFILE} -cfg=${CFG} -config=${CONFIG} -cpuCount=${CPU_COUNT} -exThreads=${EX_THREADS} -profiles=${PROFILES} -mod=${MODS} -autoinit -enableHT -noSound"
#=======================================================================
a3_start() {
echo ""
if [ ! -f $ARMA_DIR/$SERVICE ]
then
echo "$SERVICE not found! STOPPING !!!"
echo ""
sleep 1
exit
else
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "$SERVICE is already running!"
echo ""
else
echo "Setting Permissions to needed..."
echo ""
chmod -R 0755 $ARMA_DIR
chown -R $USERNAME:$USERNAME /home/$USERNAME
echo "Starting $SERVICE..."
echo ""
cd $ARMA_DIR
#sudo su $USERNAME -c "sudo nice -n -15 sudo -u $USER screen -dmS $USERNAME ./$SERVICE $OPTIONS" > stdout.log 2> stderr.log &
sudo su $USERNAME -c "screen -dmS $USERNAME ./$SERVICE $OPTIONS" > stdout.log 2> stderr.log &
echo "Searching Process $SERVICE"
echo ""
sleep 8
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "$SERVICE is now running."
echo ""
else
echo "Error! Could not start $SERVICE!"
echo ""
fi
fi
fi
}
a3_stop() {
echo ""
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "Stopping $SERVICE !!"
echo ""
killall -9 -u $USERNAME
else
echo "$SERVICE is stopped."
echo ""
fi
}
case "$1" in
start)
a3_start
;;
stop)
a3_stop
if [ -f ${PIDFILE} ]; then
rm -f ${PIDFILE}
fi
sleep 5s
;;
restart)
a3_stop
a3_start
;;
status)
if [ -f ${PIDFILE} ]; then
PID=$(< ${PIDFILE})
echo "PID-File existiert (PID=${PID})..."
if [ -f /proc/${PID}/cmdline ]; then
echo "Server Prozess scheint zu laufen..."
fi
fi
;;
*)
echo "$0 (start|stop|restart|status)"
exit 1
;;
esac
exit 0
Mein Problem welches ich habe, wenn ich einen Cronjob definiere, welcher alle 5 Minuten /etc/init.d./a3server start ausführt, passiert einfach garnix. Allerdings sollte der Script eigentlich so sicherstellen, dass der Server läuft. Weiterhin funktioniert Restart und Stop nicht richtig, sobald der Server gestoppt wird, schließt sich die gesamte Konsole.
Kann hier jemand helfen?
Vielen Dank!
Gruß