Server Startscript Problem

Post Reply
Message
Author
miChaXserial

Server Startscript Problem

#1 Post by miChaXserial »

Hallo guten Abend liebe Linux Gemeinde,
hoffe mit euch das Problem lösen zu können :>

Das folgende Script existiert 6 mal wobei immer nur der `NAME` als TDM,CTF,FFA,DUEL,FREEZE geändert ist, doch wenn man einen der anderen startet ist der erste zwar noch im `screen -ls` zu lesen doch da ist er nicht mehr.

Alles manuell zu starten klappt ohne Probleme

Code: Select all

G_USER=root
NAME=CA 
DESC="Quakelive Server" 
PARAMS="+set sv_pure 1 +set dedicated 2 +exec CA.cfg" 
DIR=/home/QL
SCRIPT=qll
DAEMON=$DIR/$SCRIPT 
 
case "$1" in
	start)
    	if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
		then
			echo "$DESC is already running!"
		else
			echo "Starting $DESC: $NAME"
			su $G_USER -c "cd $DIR; screen -d -m -S $NAME $DAEMON $PARAMS"
		fi
    ;;
 
	stop)
		if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
		then
			echo -n "Stopping $DESC: $NAME "
			kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
			echo " ... done."
		else
			echo "Coulnd't find a running $DESC"
		fi
	;;
 
	restart)
		if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
		then
			echo -n "Stopping $DESC: $NAME "
			kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
			echo " ... done."
		else
			echo "Coulnd't find a running $DESC"
		fi
 
		echo -n "Starting $DESC: $NAME"
		su $G_USER -c "cd $DIR; screen -d -m -S $NAME $DAEMON $PARAMS"
		echo " ... done."
	;;
 
	status)
		ps aux | grep -v grep | grep $SCRIPT > /dev/null
		CHECK=$?
		[ $CHECK -eq 0 ] && echo "$DESC is UP" || echo "$DESC is DOWN"
	;;
 
	*)
		echo "Usage: $0 {start|stop|restart|status}" 
		exit 1 
	;; 
 
esac 
 
exit 0
Dachte er macht schön alles in einzelnen screens stattdessen immer nur der eine Socket. Muss der `Deamon` vielleicht umbenannt werden?

Und evt. noch eine Idee das ganze für alle 6 Server in einem Script zu vereinen?

Danke im Voraus

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

Wenn ich dich recht verstehe, möchtest du mehrere Instanzen des Quakelive-Servers starten. Bei dir verwenden aber alle Skripte dieselbe Konfiguration für den Daemon.

Was ich *vermute* ist folgendes (kenne Quakelive nicht): Der in der Konfiguration angegebene Netzwerk-Port zum Connecten kann nur einmal pro Rechner benutzt werden. Den will aber jeder der Daemons aufmachen, und das klappt natürlich nicht, wenn er schon von einem anderen belegt ist. Vermutlich löst sich dein Problem, wenn du jedem Daemon eine eigene Konfigurationsdatei mit jeweils anderem Netzwerk-Port gibst.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

miChaXserial

#3 Post by miChaXserial »

Hallo guten Morgen,

das mit dem Netport können wir ausschließen da bei jedem Serverscript auch bei den `Params` eine eigene *.cfg angegeben ist wo jeder einen anderen Netport und andere Zeit/Powerup/Teamdamage/etc. Einstellungen bekommt.
Wenn ich alle 6 auf einmal starte sehe ich sie für einen kurzen Moment in der Prozessliste stehen jedoch sind kurz darauf alle anderen 5 wieder weg. Auch das mit den Netports ist dort gut zu sehen das jeder einen anderen Port nutzt. In welcher logfile könnte ich da evt. fündig werden? mfg miCha

komsomolze
Posts: 430
Joined: 03. Mar 2006 23:16

#4 Post by komsomolze »

Das noch gefunden:

Code: Select all

sudo ./qll +set dedicated 2 +set sv_pure 0 +set fs_homepath = ~/.quakelive +set fs_basepath = ~/qlded ...
also jeder Instanz einen eigenen homepath/basepath geben?
(Hardlinks für die pk3)

(Warum muß daß Ding eigentlich 'su root' laufen?)
-> verschiedene Benutzer nehmen


Falls das binary dann noch die Prozeßliste abklappert,
hilft vielleicht sowas wie der openwall-Patch (bis Kernel 2.4)
http://www.openwall.com/linux/README.shtml :
Restricted /proc.
...
This option restricts the permissions on /proc so that non-root users can see their own processes only, and nothing about active network connections, ...
-> Moderner wäre grsecurity http://grsecurity.net/features.php, zBsp.
* /proc restrictions that don't leak information about process owners
oder ein anderes Kernelsecurity-Modell
oder ein chroot (die fetten pk3 können da ja hardlinked sein).
mfg komsomolze

Post Reply