Page 1 of 1
Shellscript: Gameserver starten ohne screen
Posted: 2004-01-02 19:10
by mithandir
Code: Select all
#! /bin/sh
clear
DIR=/home/<kdnr>/hlds_l
# Internet-server:
PARAMS="./hlds_run -game cstrike +maxplayers 12 +map de_aztec +port 27015"
NAME=gs-<kdnr>
DESC="cs server <kdnr>"
case "$1" in
start)
echo "Starting $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
;;
stop)
if [[ `screen -ls |grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
;;
restart)
if [[ `screen -ls |grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
echo -n "Starting $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
echo " ... done."
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
Das oben hab ich im mom als Startscript und es funzt auch 1a bei mir und bei einigen anderen. Nur manche Leute können screen nicht ordentlich ausführen. Für diese Leute wollte ich ein shellscript schreiben was den server per: ./hlds_run -game cstrike .... >/dev/null & startet. nur wie beende ich genau diesen einen prozess dann wieder? hab bisher immer killall benutzt. nur das würde ja alle hlds_run´s beenden und das soll nicht geschehen. bisher siehts so aus:
Code: Select all
#! /bin/sh
clear
DIR=/home/<kdnr>/hlds_l
# Internet-server:
PARAMS="./hlds_run -game cstrike +maxplayers 12 +map de_aztec +port 27015"
NAME=gs-<kdnr>
DESC="cs server <kdnr>"
case "$1" in
start)
echo "Starting $DESC: $NAME"
cd $DIR
$PARAMS >/dev/null &
;;
stop)
killall hlds_run
echo " ... done."
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0
Re: Shellscript: Gameserver starten ohne screen
Posted: 2004-01-02 20:15
by niklas_
pid ermitteln und kill -9 pid ausführen
Re: Shellscript: Gameserver starten ohne screen
Posted: 2004-01-02 22:10
by mithandir
und wie ermittel ich die pid für hlds_run aus einem bestimmten verzeichniss. habs bisher nur das er alle hlds_run´s ausgibt. und das bringt mir nix da kann ich gleich killall benutzen
Re: Shellscript: Gameserver starten ohne screen
Posted: 2004-01-02 22:35
by captaincrunch
Re: Shellscript: Gameserver starten ohne screen
Posted: 2004-01-03 08:22
by thorsten
über
könntest du den Port abfangen und den entsprechenden hlds und dessen PID finden...
Re: Shellscript: Gameserver starten ohne screen
Posted: 2004-01-03 09:55
by niklas_
Bei mir funktioniert dieser Befehl nur ohne "i"... (-i -> select IPv[46] files)
Re: Shellscript: Gameserver starten ohne screen
Posted: 2004-01-03 18:56
by mithandir
also ich krieg hlds_i686 damit gekillt. der gameserver geht auch down aber restartet weil ich hlds_run nicht gekillt bekomme.
habs so versucht:
kill `pidof /home/mithandir/hlds_l/bin/sh ./hlds_run`
kill -9 `pidof /home/mithandir/hlds_l/hlds_i686`
allerdings scheint der nun alle shellscripts in /home/mithandir/hlds_l zu killen also auch das was ausgeführt wird um den hlds_run zu killen. ich beende mich anscheinend selber bevor ich irgendwas anderes beende.
mit lsof -ni | grep $PORT krieg ich auch nur den hlds_i686 gekillt und hlds_run restartet den dannach sofort
