Shellscript: Gameserver starten ohne screen

Bash, Shell, PHP, Python, Perl, CGI
mithandir
Posts: 15
Joined: 2003-03-14 07:19

Shellscript: Gameserver starten ohne screen

Post 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
niklas_
Posts: 122
Joined: 2003-08-13 20:46

Re: Shellscript: Gameserver starten ohne screen

Post by niklas_ »

pid ermitteln und kill -9 pid ausführen
mithandir
Posts: 15
Joined: 2003-03-14 07:19

Re: Shellscript: Gameserver starten ohne screen

Post 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
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Shellscript: Gameserver starten ohne screen

Post by captaincrunch »

Code: Select all

man pidof
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
thorsten
Posts: 561
Joined: 2003-02-01 13:14
Location: Fuldatal

Re: Shellscript: Gameserver starten ohne screen

Post by thorsten »

über

Code: Select all

lsof -ni | grep $PORT 
könntest du den Port abfangen und den entsprechenden hlds und dessen PID finden...
niklas_
Posts: 122
Joined: 2003-08-13 20:46

Re: Shellscript: Gameserver starten ohne screen

Post by niklas_ »

Bei mir funktioniert dieser Befehl nur ohne "i"... (-i -> select IPv[46] files)
mithandir
Posts: 15
Joined: 2003-03-14 07:19

Re: Shellscript: Gameserver starten ohne screen

Post 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 :cry: