PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Startscript: Screen Problem



Metus
23.12.04, 11:39
Hi, ich verwende folgendes Startscript, um einen Gameserver zu starten:



#! /bin/sh
################################################## #######
# Use at your Own Risk !!!!!!!!!!! #
# You need screen installed on your server #
################################################## #######
# Vars: #
# G_USER Username #
# NAME The Screen Name #
# DESC Server Desciption #
# PARAMS Start Parameter #
# DIR HLDS Directory (absolut) #
# SCRIPT Serverstart Script #
# DAEMON Daemon #
################################################## #######
# OPTIONS: (start|stop|restart|status) #
################################################## #######

################## User ################################
# Username unter dem der Server laufen soll
# NICHT als root laufen lassen
G_USER=zgsnet
################## Vars #################################
# Screen NAME
# Attach Screen : # screen -r NAME
# Detach Screen : # [CTRL]+[A]; [D]
# Don't press [CTRL]+[C] it will terminate screen
NAME=css
################## Server Description ###################
# Single Word DESC=myserver
# Multiple Words DESC="This is my Server"
DESC="CSS"
################## Parameter ############################
# CAN USE: +servercfgfile server.cfg OR +exec server.cfg
PARAMS="-game cstrike -insecure -nomaster +sv_lan 1 +map de_dust2 +maxplayers 16"
################## Directory ############################
# Your Path to Server Directory (absolute)
DIR=/gameserver/hl2
################## DAEMON ##############################
# You place your startscript here
SCRIPT=srcds_run
################################################## ######
#### DONT CHANGE ANYTHINK BELOW THIS LINE ! ! ! ####
################################################## ######

DAEMON=$DIR/$SCRIPT

case "$1" in
start)
if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
then
echo "Server 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 $DIR > /dev/null
CHECK=$?
[ $CHECK -eq 0 ] && echo "$NAME is UP" || echo "$NAME is DOWN"
;;
*)

echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac

exit 0


Dieses Script startet z.B. einen CS Source Server. Wenn ich jetzt aber mit "screen -r css" (css = $NAME) den Screen Prozess aufrufen will, bekomme ich die Meldung: "There is no screen to be resumed matching css."

Der Prozess "SCREEN -d -m -S css /gameserver/hl2/srcds_run -game cstrike -insecure -nomaster +sv_lan 1 +map de_dust2 +maxplayers 16" läuft allerdings.

Wo liegt der Fehler?

drcux
23.12.04, 12:17
was sagt ein

screen -list

?

Metalaz
23.12.04, 15:23
hmm ich finde dieses Script recht umständlich. Versuche mal das hier, müsste aber für CS noch abgeändert werden.


#! /bin/sh


NAME=CoDServerPort28960
DESC="CoD 14 mit mods"
PARAMS="+set net_port 28960 +map_rotate"
DIR=/home/www/web1/callofduty
SCRIPT=cod_lnxded

DAEMON=$DIR/$SCRIPT

case "$1" in
start)
echo "Starte $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
;;

stop)
if [[ `screen -ls |grep $NAME` ]]
then
echo -n "Stoppe $DESC: $NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo " ... Server gestoppt."
else
echo "Konnte keinen laufenden Server mit PID -- $DESC -- nicht finden"
fi
;;

restart)
if [[ `screen -ls |grep $NAME` ]]
then
echo -n "Stoppe $DESC: $NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo " ... Server gestoppt ... Kommando Start wird ausgeführt"
else
echo "Konnte keinen laufenden Server mit PID -- $DESC -- nicht finden ... Kommando Start wird ausgeführt"
fi

echo -n "Starte $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
echo " ... Server gestartet."
;;
*)
echo "Usage: $0 Parameter eingeben {start|stop|restart}"
exit 1
;;
esac

exit 0

ich hatte auch schon so Scripte wie du, die waren mir aber viel zu komplex und haben auch Ihren sinn nie erfüllt.

dgrcrasher
29.03.06, 09:58
kenn mich absolut nicht mehr aus er startet und er stopt aber updaten tut er nicht kann mir bitte wer helfen THX



#! /bin/sh

IPADRESSE=192.168.0.5
PORTADRESSE=27015
MAXPLAYERANZAHL=64
STARTMAP=de_dust2
CS_USER=css
SPIELART="Counter-Strike Source"
NAME=CSS:Server
DIR=/home/cssp
PIDFILE=/home/cssp/server.pid
#
#
DAEMON=$DIR/srcds_run
#
PARAMS="-game cstrike -ip $IPADRESSE -port $PORTADRESSE +maxplayers $MAXPLAYERANZAHL +map $STARTMAP -tickrate 100 -autoupdate -pidfile $PIDFILE"
#
case "$1" in
start)
if [[ `ps ax | grep -v grep | grep SCREEN | grep $NAME` ]]
then
echo "$NAME läuft bereits....<br>"
else
cd $DIR
echo "$NAME Update....<br>"
su $CS_USER -c "./steam -command update -game $SPIELART -dir $DIR"
echo "<br>$NAME wird gestartet...."
su $CS_USER -c "screen -m -d -S $NAME $DAEMON $PARAMS"
fi
;;

stop)
if [[ `ps ax | grep -v grep | grep SCREEN | grep $NAME` ]]
then
PIDNR=`ps ax | grep -v grep | grep SCREEN | grep $NAME | awk '{print $1}'`
echo "$NAME PID:($PIDNR) wird beendet....<br>"
su $CS_USER -c "kill -TERM $PIDNR"
su $CS_USER -c "rm $PIDFILE"
else
echo "$NAME läuft nicht....<br>"
fi
;;

restart)
$0 stop
$0 start
;;

status)

if [[ `ps ax | grep -v grep | grep SCREEN | grep $NAME` ]]
then
echo 1
else
echo 0
fi
;;

*)
echo "start|stop|restart|status"
exit 1
;;
esac