Hallo,
ich bräuchte ein funktionierendes Start Script für meinen Arma3 Altis Life Server. Es geht um einen vLinux Debian Server und mein startscript funktioniert nicht. Gibt es da ein gutes, öffentliches?

Server Startscript
-
Blackwolf99 -
31. Juli 2016 um 13:32 -
Geschlossen -
Erledigt
-
-
Das ist mein Startscript, basierend auf einigen anderen Startscripts, jedoch stark personalisiert mit einem Ordner namens serverconfig, in dem sich [lexicon]basic.cfg[/lexicon], server.cfg und das Arma Profil befinden. Bei startLoad und restartLoad werden life_server.pbo, Altis_Life.Altis.pbo und der Ordner serverconfig aus dem Ordner upload kopiert und die vorherigen Missiondateien werden in den "safe" Ordner mit Datum verschoben. Logs werden natürlich auch erstellt.
Bash: arma3lifeserver.sh
Alles anzeigen#!/bin/bash PATH=/bin:/usr/bin:/sbin:/usr/sbin # Hier anpassen # DATE=$(date +%Y-%m-%d_%H-%M-%S); LOGNAME="LIFE" LOG="${DATE}_${LOGNAME}" logPath=/home/steam/steamcmd/arma3/life/log serverConfigDir=/home/steam/steamcmd/arma3/life/serverconfig homePath=/home/steam/steamcmd/arma3/life missionPath=/home/steam/steamcmd/arma3/life/mpmissions lifePath=/home/steam/steamcmd/arma3/life/@life_server/addons safeMissionPath=/home/steam/steamcmd/arma3/life/safe/mission safeLifePath=/home/steam/steamcmd/arma3/life/safe/life safeConfigPath=/home/steam/steamcmd/arma3/life/safe/config uploadPath=/home/steam/steamcmd/arma3/life/upload # networkConfig=$serverConfigDir/basic.cfg serverConfig=$serverConfigDir/server.cfg profileName=life DIR=/home/steam/steamcmd/arma3/life servermods=@marma mods=@extDB2\;@life_server BE=$DIR/battleye DAEMON=arma3lifeserver NAME=arma3lifeserver PARAMS="-cfg=$networkConfig -config=$serverConfig -name=$profileName -servermod=$servermods -mod=$mods -bepath=$BE -world=empty -port=2302 -noSound -loadMissionToMemory -enableHT -autoinit" DESC="ArmA 3 Lifeserver" # # Ab hier nichts mehr ändern case "$1" in start) echo "Starte: $DESC" if [ -e $DIR ]; then cd $DIR ./$DAEMON $PARAMS else echo "Verzeichnis $DIR nicht gefunden!" fi ;; startLoad) echo "Wechsle Missionsdatei und starte: $DESC" cd $missionPath mv Altis_Life.Altis.pbo $safeMissionPath cd $safeMissionPath mv Altis_Life.Altis.pbo ${DATE}-Altis_Life.Altis.pbo cd $lifePath mv life_server.pbo $safeLifePath cd $safeLifePath mv life_server.pbo ${DATE}-life_server.pbo cd $homePath mv serverconfig $safeConfigPath cd $safeConfigPath mv serverconfig ${DATE}-serverconfig cd $uploadPath cp Altis_Life.Altis.pbo $missionPath cp life_server.pbo $lifePath cp -r serverconfig $homePath if [ -e $DIR ]; then cd $DIR ./$DAEMON $PARAMS >$logPath/${LOG}.rpt 2>&1 else echo "Verzeichnis $DIR nicht gefunden!" fi ;; stop) if [[ `pidof $NAME` > "0" ]] then echo -n "Stoppe: $DESC" kill `pidof $NAME |awk -F . '{print $1}'|awk '{print $1}'` echo " ... fertig." else echo "Kein $DESC gefunden" fi ;; restart) if [[ `pidof $NAME` > "0" ]] then echo -n "Stoppe: $DESC" kill `pidof $NAME |awk -F . '{print $1}'|awk '{print $1}'` echo " ... fertig." else echo "Kein $DESC gefunden" fi echo -n "Starte: $DESC" cd $DIR ./$DAEMON $PARAMS echo " ... fertig." ;; restartLoad) if [[ `pidof $NAME` > "0" ]] then echo -n "Stoppe: $DESC" kill `pidof $NAME |awk -F . '{print $1}'|awk '{print $1}'` echo " ... fertig." else echo "Kein $DESC gefunden" fi echo -n "Wechsle Missionsdatei und starte: $DESC" cd $missionPath mv Altis_Life.Altis.pbo $safeMissionPath cd $safeMissionPath mv Altis_Life.Altis.pbo ${DATE}-Altis_Life.Altis.pbo cd $lifePath mv life_server.pbo $safeLifePath cd $safeLifePath mv life_server.pbo ${DATE}-life_server.pbo cd $homePath mv serverconfig $safeConfigPath cd $safeConfigPath mv serverconfig ${DATE}-serverconfig cd $uploadPath cp Altis_Life.Altis.pbo $missionPath cp life_server.pbo $lifePath cp -r serverconfig $homePath cd $DIR ./$DAEMON $PARAMS >$logPath/${LOG}.rpt 2>&1 echo " ... fertig." ;; status) if [[ `pidof $NAME` > "0" ]] then echo "$DESC ist ONLINE" else echo "$DESC ist OFFLINE" fi ;; crash) if [[ `pidof $NAME` > "0" ]] then echo "Server läuft" else echo "Server nicht gefunden, neustarten ..." cd $DIR ./$DAEMON $PARAMS fi ;; *) echo "Benutzung: $0 {start|startLoad|stop|status|restart|restartLoad|crash}" exit 1 ;; esac exit 0
-
Vielen Dank...Dieses Startscirpt müsste ich aber dann auch in einem Screen starten richtig?
Und wie machst du das mit den Restarts?
Desweiteren geht der Server ja wieder aus, wenn man die SSH Verbindung schließt -
Restarts erledigen Cronjobs.
Das ist richtig, dass der Server ausgeht, wenn man die Verbindung schließt, jedoch starte ich ihn via eigens programmierter Weboberfläche. Da geht er dann nicht aus.
Edit: ich habe mal die Codezeile aus meiner .php Datei herausgesucht:
$cmd = 'sudo /home/steam/steamcmd/arma3/life/arma3lifeserver.sh start'; exec($cmd . " > /dev/null &"); -
Wenn ich den Startscript im screen starte, sollte es ja auch gehen...
Und wie macht man die Cronjobs?^^ -
ja screen dürfte auch funktionieren, damit kenne ich mich aber nicht aus.
crontab -e in die Konsole eingeben und dann folgende Zeile einfügen und speichern:
0 0,4,8,12,16,20 * * * /home/steam/steamcmd/arma3/life/arma3lifeserver.sh restart >/dev/null 2>&1woher ich die Infos habe: Cronjobs, Arma 3 Server Linux Installation und ein wenig googeln schadet nie
Edit: mit diesem Cronjob startet der Server um 0,4,8,12,16 und 20 Uhr neu
-
Vielen Dank...
Ich hab da jedoch noch ein paar Fragen, bzw Probleme. Wäre es vielleicht möglich, das mir jemand via Teamspeak hilft?
Fals jemand so nett wäre, IP: 37.228.132.240
Danke^^ -
Vielen Dank...Dieses Startscirpt müsste ich aber dann auch in einem Screen starten richtig?
Und wie machst du das mit den Restarts?
Desweiteren geht der Server ja wieder aus, wenn man die SSH Verbindung schließt
Dir ist bewusst das Screen ein Programm/Tool auf dem Root ist wenn du denn Server mit Screen startest. Command "screen -dmS new_screen.sh" und du dann Putty oder das SSH tool schließt das der Server dann perm an ist? -
ja, das ist mir bewusst...
Wie soll er denn sonst die ganze Zeit laufen ohne Putty offen zu haben?