Benutzer-Werkzeuge

Webseiten-Werkzeuge


installation:dedicated_server_standalone:script

Shell-Scripts, Batchdateien und anderes

Das Starten, Stoppen, Neustarten und Updaten eines Servers lässt sich mit Hilfe von Shell-Scripts bzw. Batchdateien erledigen. Das bearbeiten dieses Artikels ist aus Sicherheitsgründen nur Mitgliedern der Gruppe wiki, Moderatoren und Administratoren gestattet.

Linux

  • Start,Stop und Restartscript mit Konfigdateien (v1.2.9)
    # 1.2.9
    # -fixed setprio
    # +sleep 2 between restart command
    # +new configexample
    #
    # 1.2.8
    # -no bugs found
    #
    # 1.2.8Beta
    #
    # +added support for screenlogs
    # +new config var; screen_log=1 -> logging
    # +new config var; screen_logfile -> filename
    #
    # 1.2.7
    # -stored all functions in $script_dir/script_functions/*.func
    #
    # 1.2.6
    # -updated status to use load_config
    # -updated function status with a returncode
    # +added watchdog, which loads in the same screen with a new window
    #  the var run_watchdog in the startscript loads the watchdog
    # +top shows now all child processes of the screen
    #
    
    # 1.2.5-1
    # -status wasn't working

Das Script basiert auf Konfigurationsdateien. Die Konfigdateien müssen mit der ASCII-Zeichenkodierung im UNIX-Format1) gespeichert werden. Als Editor unter Windows ist Notepad++ zu empfehlen. Dadurch, dass der Daemon und die Parameter beliebig verändert werden können, eignet sich das Script auch für andere Server als den Source Dedicated Server. Jeder Server hat seine eigene Konfigurationsdatei im Verzeichnis ./startscript/. Server können in Listen zusammengefasst werden. So ist es möglich mehrere Server mit einem Befehl gleichzeitig zu starten, stoppen, neustarten oder den Status auszugeben. Die Listen sind in ./startscript/lists/ enthalten. Soll eine Liste verwendet werden, muss ein @ vor dem Listennamen stehen. Die Befehle start, stop, restart, status akzeptieren mehrere Argumente. So ist es möglich mehrere Server für eine Aktion auszuwählen. Auch mehrere Listen können für eine Aktionen zugleich verwendet werden.

Seit Version 1.2.7 kann mit ./run.sh top <congigname> die Auslastung eines Server angezeigt werden. Es werden dann im Programm top alle Child-Prozesse des Screens aufgeführt. Eine weitere Funktion ist run_watchdog. Für Admins die selber scripten, können so einen Prozess im screen des Servers starten. Eine wichtige interne Änderung des Scripts ist noch, dass alle Funktionen in Dateien ausgelagert sind.

Konfigurationsdateien

Über die Dateien können für jeden Server einzeln verschiedene Einstellungen vorgenommen werden:

Variable Beschreibung
screen_name= Name des Screens.
screen_log= 1 schaltet den Screen-Log ein, 0 deaktivert den Screen-Log.
screen_logfile= Pfad zur Logdatei, die vom Screen erstellt werden soll. Das Verzeichnis muss existieren.
daemon_user= User, mit dem der Daemon gestartet wird, wenn das Script als root ausführt wird.
daemon_dir= Pfad zum Daemon.
daemon= Dateiname des Daemons.
parameter= Eigene Startparameter des Daemons.
daemon_wrapper= Dateiname des Wrappers, welcher automatisch erstellt wird.
run_watchdog= Pfad zu einem Script2), welches im Screen des Servers ausgeführt wird. Es wird automatisch ein neues Fenster im Screen erstellt, welche die ID 1 hat und watchdog heißt. Mit Strg+a Leertaste kann zum nächsten Fenster gewechselt werden. Für weitere Informationen sollten die manpages zu screen gelesen werden.
run_script_before= Pfad zu einem Script3), welches vor dem Daemon gestartet werden soll. Wenn die Variable nicht gesetzt wird, wird auch nichts vor dem Start des Daemons ausgeführt.
run_script_after= Pfad zu einem Script4), welches nach dem Daemon gestartet werden soll. Wenn die Variable nicht gesetzt wird, wird auch nichts nach dem Start des Daemons ausgeführt.
loop= 0 = Kein automatischer Restart des Daemons
1 = Restart des Daemons nach einem Absturz.
cpu= An welchen CPU-Kern der Server gebunden werden soll. Wird die Variable leer gelassen, wird taskset nicht verwendet.
prio= Mit welcher Priorität der Prozess laufen soll5).
preload_lib= Es kann eine Library vorausgeladen werden. Drei freie Preload_Libs von anderen Entwicklern sind enthalten.
preload_lib_parm= Zusätzlich kann noch ein zusätzlicher Parameter für die Preload-Lib angegeben werden.6)

Priorität

Damit der User, mit dem der GameServer gestartet wird, auch die Berechtigung hat, die Priorität festzulegen, muss die limits.conf bearbeitet werden.
Mit folgendem Code, kann man dem angegeben User die maximal zulässige Priorität unter Debian Lenny zuweisen:

echo "USERNAME - rtprio 99" >> /etc/security/limits.conf

Download und Installation

wget http://sourceserver.info/wiki/_media/installation/dedicated_server_standalone/start-script-1.2.7.tar.gz
tar -xzf start-script-1.2.7.tar.gz

Abkürzungen für die Shell

Da mit der Zeit das Eintippen von ./run.sh start foo recht nervig ist, kann man auch Abkürzungen für die einzelnen Aktionen anlegen. Dazu muss lediglich die Datei .bashrc, welche sich im Homeverzeichnis des Users befindet, angelegt bzw. bearbeitet werden.

Beispiel

echo -e "\E[31;40m
+--------------------------------------------------------------+
|                                                              |
|                                                              |
| gtop <config>      - CPU Auslastung der Childprozesse        |
|                      des Screens                             |
| gstatus <config>   - Serverstatus anzeigen                   |
| gstart <config>    - Server starten                          |
| gstop <config>     - Server stoppen                          |
| grestart <config>  - Server restarten                        |
| glist              - eingerichtete Server anzeigen           |
|                                                              |
+--------------------------------------------------------------+"
tput sgr0

gtop () { ~/run.sh top $@; }
gget () { ~/run.sh get $@; }
gstart () { ~/run.sh start $@; }
gstop () { ~/run.sh stop $@; }
grestart () { ~/run.sh restart $@; }
gstatus () { ~/run.sh status $@; }
glist () { ~/run.sh list; }

Da Variablen übergeben werden, kann man in diesem Fall nicht mit alias arbeiten. Stattdessen habe ich Funktionen verwendet.

Verwendung
  • Austlastung von warserver1 anzeigen ⇒ gtop warserver1
  • Warserver 1 neustarten ⇒ grestart warserver1
  • In den Screen von warserver1 wechseln ⇒ gget warserver1
  • Konfigdateien auflisten ⇒ glist

Windows

  • Update- und Autorestart-Script - Die Batchdatei kann mehrmals kopiert und gleichzeitig für mehrere unterschiedliche Server verwendet werden.
  • srcdsfpsboost.zip verändert durch einen einfachen Funktionsaufruf den Windows-Kernel-Timer, welches dann mehr als 64 FPS ermöglicht. Der Quellcode ist im Archiv mit enthalten und kann selber kompiliert werden.
  • High Resolution Timer Service installiert einen Dienst um den Kernel-Timer von Windows auf 1000HZ zu stellen. Der Sourcecode ist mit enthalten.
1) Steuerzeichen LF am Zeilenende.
2) , 3) , 4) wenn Parameter übergeben werden sollen, muss mit Anführungszeichen gequotet werden
5) muss über limits.conf dem User vorher erlaubt werden
6) z.B. „FPS=1000“
installation/dedicated_server_standalone/script.txt · Zuletzt geändert: 2012/10/18 20:37 von fluxX