Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

21.01.2009, 17:29

Boot Skript für Gameserver

Hallo!

Ich habe einen Gameserver für AssaultCube, der sich auch über die Kommandozeile fehlerfrei starten lässt.
Nun möchte ich automatisch beim Hochfahren meines VirtualServers (openSUSE 10.3 inkl. Plesk 8.4) den Gameserver gleich mitstarten.

Dazu habe ich folgendes Skript (.sh):

/usr/games/ac/acserver.sh

Zitat


#!/bin/sh
#
# example AssaultCube-Server launch script
# by MeatROme - see http://assault.cubers.net/wiki/Server_setup
# naturally also check your local documentation (docs) folder in the game-installation directory

# how many clients can connect?
PLAYERS=14

# server description
NAME='Mein Server'

# Message Of The Day
MOTD='Hallo'

# kick player when frag-count is ..
FRAGS=-2

TS=$(date +%Y%m%d_%H%M%S)
TSH=$(date +%H:%M:%S\ %d.%m.%y)

#
# run the script (server) with "screen":
#
screen
irssi
cd /usr/games/ac/bin_unix/
./linux_server -c$PLAYERS -n"$NAME" -o"$MOTD" -k$FRAGS > ServerLog_$TS 2>&1
^a d


Das Kommando in der letzten Zeile ^a d soll ein Ersatz für den Befehl Strg + A zusammen mit STRG + D sein, welchen ich sonst in der Konsole immer drücke, um GNU screen zu trennen (detach). Wenn ich allerdings manuell in der Konsole ^a d eingebe, scheint das nicht zu funktionieren. Ich habe aber gelesen, dass das eigentlich so gehen müsste, weshalb diese Zeile noch im Skript steht.

Kommen wir zum Startup-Skript, was beim Booten geladen werden soll, um den Server durch einen Aufruf der Datei acserver.sh zu starten:

/etc/init.d/acstartup

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#! /bin/sh

ACSERV_BIN=/usr/games/ac/acserver.sh

### BEGIN INIT INFO
# Provides:       assaultcube server
# Required-Start: $network
# X-UnitedLinux-Should-Start:
# Required-Stop:
# Default-Start:  3
# Default-Stop:
# Description:    AssaultCube Gameserver
### END INIT INFO

. /etc/rc.status
rc_reset

case "$1" in
    start)
        echo -n "Starting AC server: "
        startproc $ACSERV_BIN
        rc_status -v
        ;;
    stop)
        echo -n "Shutting down AC server daemon: "
        killproc -TERM $ACSERV_BIN
        rc_status -v
        ;;
    status)
        echo -n "Checking for AC server daemon: "
        checkproc $ACSERV_BIN
        rc_status -v
        ;;
    *)
        echo "Usage: $0 {start|stop|status}"
        exit 1
        ;;
esac
rc_exit


Mein Server läuft im runlevel 3 weshalb ich das Startup-Skript wie folgt verlinkt habe:

Zitat


ln -s /etc/init.d/acstartup /etc/rc3.d/S12acstartup


Doch das funktioniert nicht. Ich habe mich auch schon an die openSUSE Dokumentation (SDB:Create your own init scripts) gehalten und eine Verlinkung mit dem Ordner /sbin/ ausprobiert:

Zitat


ln -s /etc/init.d/acstartup /sbin/rcacstartup


Ebenfalls ohne Erfolg. :(

Vielleicht kann mir ja hier jemand weiterhelfen.

Würde mich sehr freuen :)

Thema bewerten