Script defekt

ChrisMD

ChrisMD

Haudegen
Ich muss ja einem helfen (der noch weniger Ahnung von Debian hat als ich) einen Rootserver am laufen zu halten. Ist ja auch kein Problem aber man macht sich ja gern die Arbeit leichter.
Auf counter-strike.de gabs fertige Startupscripte.
Die hab ich auch unter SuSE benutzt wo sie wunderbar laufen.

Aber auf der frischen Sarge Installation hab ich damit Probleme.

Erstens kennt er die Option su -l nicht. Ok dacht ich mir entfern halt das l dann sollte es ja auch gehen, scheint es dann auch.
Jetzt hab ich aber das Problem dass das Script nicht "merkt" das der Server schon läuft. Das Script startet ihn zwar, gibt aber bei Status aus das er ja DOWN wäre bzw. ich kann nicht stoppen da es behauptet man könne einen Server der DOWN ist ja nicht stoppen.


Was muss ich dran ändern das oben genanntes nicht mehr auftritt?

Am besten wärs wenn mir einer ein Script machen könnte das diese Aufgabe erledigt aber etwas simpler ist und auch abwärtskompatibel. :D
Aber muss ja nich unbedingt sein wenn ich weiß was daran falsch ist.

Das Script sieht wie folgt aus:

Code:
# !!!!!!!!!!!!!! CHANGE THIS TO THE USER YOU USE FOR YOUR SERVER !!!!!!!!!!!!!!!
CS_USER=server
# You must be logged in as this user (not by su!) to re-attach the screen!

PATH=/bin:/usr/bin:/sbin:/usr/sbin

# # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
DIR=~server/srcds_war1

DAEMON=srcds_run

# LAN-server:
#PARAMS="-game cstrike -nomaster -insecure +sv_lan 1 +maxplayers 16 +map de_dust"
# Internet-server:
PARAMS="-game cstrike +map de_dust2 +maxplayers 12 -port 27015 -tickrate 100 -autoupdate"

NAME=srcds_war1

start() {
   echo "Starting $NAME"
   if [ -e $DIR ];
   then
    su $CS_USER -l -c "cd $DIR ; screen -d -m -S $NAME ./$DAEMON $PARAMS"
    echo " ... done."
   else echo "No such directory: $DIR!"
   fi
}

stop () {
   if [[ `su $CS_USER -l -c "screen -ls" | grep $NAME` ]]
   then
       echo -n "Stopping $NAME"
       kill $(su $CS_USER -l -c "screen -ls" | awk -F . "\$2 ~ /$NAME.*/ {print \$1}" | awk '{print $1}')
       echo " ... done."
   else
       echo "$NAME could not be found. Probably not running."
   fi
}



case "$1" in
 start)
   start
   ;;

 stop)
   stop
   ;;

 restart)
   stop
   start
   ;;

 status)
   su $CS_USER -l -c "screen -ls" | grep $NAME > /dev/null
   CHECK=$?
   [ $CHECK -eq 0 ] && echo "$NAME is UP" || echo "$NAME is DOWN"
   ;;

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

esac


exit 0
 
Code:
# !!!!!!!!!!!!!! CHANGE THIS TO THE USER YOU USE FOR YOUR SERVER !!!!!!!!!!!!!!!
CS_USER=server
# You must be logged in as this user (not by su!) to re-attach the screen!
Offenbar muss der Server im 'screen' laufen. Weiterhin muss er als User 'server' gestartet werden.
Code:
# # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
DIR=~server/srcds_war1
Und hier könnte das Problem liegen, denn es muss heissen
Code:
DIR=~[b]/[/b]server/srcds_war1
Sofern der Server unter /home/server/server installiert ist.
 
Der Benutzer heißt server und das Verzeichnis liegt in dessen Home.
Warum ich das so gemacht hab weiß ich jetzt ach nicht genau. Aber ich werds mal versuchen. :)
 
Zuletzt bearbeitet:
Wenn der Pfad stimmt, dann setze wenigstens das fehlende '/' ein. ~server wird sonst zu /home/serverserver führen und nicht (wie wahrscheinlich gewünscht) zu /home/server/server
 
Das "su" aus Sarge kennt nur "-" statt "-l" ... gleiche Funktion.

Läuft der screen denn überhaupt noch?
 

Ähnliche Themen

NGINX bietet intern abgerufene Seiten nur zum Download an, extern geht's

Apache HTTP Server startet nicht

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Adressvergabe in anderen Subnets

X startet nichtmehr

Zurück
Oben