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
#!/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:
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:
ln -s /etc/init.d/acstartup /sbin/rcacstartup
Ebenfalls ohne Erfolg.
Vielleicht kann mir ja hier jemand weiterhelfen.
Würde mich sehr freuen