jeudi 29 octobre 2015

Probleme mit cron + init.d + sudo

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).

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ß


Aucun commentaire:

Enregistrer un commentaire