Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hiho,

Hoffe ich hab das Thema in den richtigen Bereich gepostet.

Es geht um folgendes. Ich hab im Netz nen Script für das Starten eines CSS Servers unter Linux gefunden und hab diesen auf meine Verhältnisse noch angepasst und er funktioniert auch fast tadellos. Ich kann den Server starten und ich kann mir auch den Status anzeigen lassen und ich kann ihn auch beenden und da liegt das eigentliche Problem. Wenn ich sage blabla.sh stop dann wird der Server zwar gestoppt so das man nicht mehr drauf verbinden kann, aber wenn ich dann mit "ps -ax" mir die Prozesse anzeigen lasse ist der Prozess immer noch aktiv was dann auch die Statusanzeige mit blabla.sh status verfälscht, weil er dann sagt der Server sei noch online.

Hier ist mal der Script. Ich hoffe ihr könnt mir helfen :)


#!/bin/sh

#

# Start the Counter-Strike dedicated server.

#


# Edit and uncomment it to run the server as non-root

CS_USER="css"


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


# # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!

DIR=/home/css/css_server


DAEMON=$DIR/srcds_run


# LAN-server:

#PARAMS="-game cstrike -nomaster -insecure +sv_lan 1 +maxplayers 16 +map de_dust"

# Internet-server:

PARAMS="./srcds_run -game cstrike +ip 134.155.50.35 -port 27015 +map de_dust2 +maxplayers 12"


NAME=cstrike

DESC="Counter Strike Source Dedicated Server"


case "$1" in

start)

echo "Starting $DESC: $NAME"

if [ -e $DIR ];

then

cd $DIR

#  Change the lines for running as non-root!

su $CS_USER - -c "screen -d -m -S $NAME $DAEMON $PARAMS"

screen -d -m -S $NAME $DAEMON $PARAMS

else echo "No such directory: $DIR!"

fi

;;


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."

   ;;


    status)

    # Check whether there's a "hlds" process

    # if "checkproc" is installed, you can use this:

    # checkproc $DIR/hlds_i686 && echo "CS-Server RUNNING" || echo "CS-Server NOT RUNNING"

    # (thx to commander)

    ps aux | grep -v grep | grep srcds_r > /dev/null

    CHECK=$?

    [ $CHECK -eq 0 ] && echo "CSS Server is UP" || echo "CSS Server is DOWN"

    ;; 


     *)

     echo "Usage: $0 {start|stop|status|restart}"

     exit 1

     ;;

     esac


     exit 0

Mfg

Feigling

Geschrieben

Hallo,

hast Du mal das original Skript da - bitte posten, mit einem Diff könnte man

Deine wesentliche Anpassungen herausfinden und die Fehlersuche wäre leichter...

(keine Zeit das ganze Skript jetzt durchzusehen)...

Geschrieben


#!/bin/sh

#

# Start the Counter-Strike dedicated server.

#


clear


# Edit and uncomment it to run the server as non-root

# CS_USER="hluser"


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


# # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!

DIR=/home/hlserver1


DAEMON=$DIR/hlds_run


# LAN-server:

#PARAMS="-game cstrike -nomaster -insecure +sv_lan 1 +maxplayers 16 +map de_dust"

# Internet-server:

PARAMS="-binary ./hlds_i686 -game czero +ip xx.x.xx.xx.x -port 27015 +map de_dust2_cz +maxplayers 32"


NAME=cstrike

DESC="CounterStrike czero dedicated server"


case "$1" in

 start)

   echo "Starting $DESC: $NAME"

   if [ -e $DIR ];

   then

    cd $DIR

#  Change the lines for running as non-root!

#  su $CS_USER - -c "screen -d -m -S $NAME $DAEMON $PARAMS"

    screen -d -m -S $NAME $DAEMON $PARAMS

   else echo "No such directory: $DIR!"

   fi

   ;;


 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."

   ;;


 status)

   # Check whether there's a "hlds" process

   # if "checkproc" is installed, you can use this:

   # checkproc $DIR/hlds_i686 && echo "CS-Server RUNNING" || echo "CS-Server NOT RUNNING"

   # (thx to commander)

   ps aux | grep -v grep | grep hlds_r > /dev/null

   CHECK=$?

   [ $CHECK -eq 0 ] && echo "HLDS is UP" || echo "HLDS is DOWN"

   ;; 


 *)

   echo "Usage: $0 {start|stop|status|restart}"

   exit 1

   ;;

esac


exit 0

Das hier ist der Originalscript.

Geschrieben

Hi,

jetzt - sorry grad im Moment wars bissi brenzlig.

Wenn ich Dich/das Skript richtig verstehe, willst Du es als root-User laufen

lassen - richtig?

Überprüf mal bitte diese Parameterübergabe:

# Internet-server:

PARAMS="-binary ./hlds_i686 -game czero +ip xx.x.xx.xx.x -port 27015 +map de_dust2_cz +maxplayers 32"
So sieht der im original Skript aus:
# Internet-server:

PARAMS="./srcds_run -game cstrike +ip 134.155.50.35 -port 27015 +map de_dust2 +maxplayers 12"
Und als letzten wesentlichen Punkt (und für mein Gefühl hast Du auch hier dein Problem) prüfe mal bitte wenn der Server gestartet ist, ob folgende Kommandozeile eine Ausgabe liefert:
ps aux | grep -v grep | grep hlds_r

...dann sehen wir weiter (evtl. musst Du Deinen grep-Ausdruck anpassen) bzw. das Exit-Code Auslese-Verhalten ändern :D

Geschrieben

Also ich muss dich enttäuschen aber ich will den Script als User css laufen lassen, der auch angelegt ist ;)

Du hast übrigens die Scripts vertauscht ;)

Original


# Internet-server:

PARAMS="-binary ./hlds_i686 -game czero +ip xx.x.xx.xx.x -port 27015 +map de_dust2_cz +maxplayers 32"

Mein Variante

# Internet-server:

PARAMS="./srcds_run -game cstrike +ip 134.155.50.35 -port 27015 +map de_dust2 +maxplayers 12"

Die Eingabe von
ps aux | grep -v grep | grep hlds_r

ergibt keine Ausgabe.

Geschrieben

Ups sorry, in der Eile ^^

Na gut, dann ändere doch bitte mal folgende Zeile:

# Internet-server:

PARAMS="./srcds_run -game cstrike +ip 134.155.50.35 -port 27015 +map de_dust2 +maxplayers 12"

in folgende ab:
# Internet-server:

PARAMS="-game cstrike +ip 134.155.50.35 -port 27015 +map de_dust2 +maxplayers 12"

Stoppe (zur Sicherheit) und Starte den Server (also den Dienst erneut) und wenn es dann noch nicht funktioniert, poste bitte nochmal die Ausgabe von (wenn der Server gestartet ist und läuft):
ps aux | grep -v grep | grep srcds_r

Bzw. kannst Du ja mal selbst gucken und nachvollziehen, ob ein Prozess

namens srcds_r läuft - woher nimmst Du denn eigentlich die Info, dass

der Process srcds_r heißt nachdem Du greppen musst?

Geschrieben
Weil der Server mit einer Datei gestartet wird die srcds_run heißt ;)

Das heißt IMHO erstmal garnichts :D

2 Möglichkeiten:

1. Willst Du den Dienst stoppen, startest Du den kompletten Server durch

2. Du verschaffst mir eine Login-Shell zum nachvollziehen auf Deinem Server

Natürlich ist das nur ein Witz :D :D

Mhm...bissi schwierig...also Du hast definitiv das Problem, dass das Matching

auf den Prozess nicht klappt und somit der kill auch nicht funktioniert.

Wir sollten die Sache mal ganz anderes angehen, erstmal losgelöst vom Skript.

Ich kenne Deine Umgebung einfach zu wenig und vom CSS Server hab ich

noch weniger Ahnung.

Aaaalso:

Starte doch bitte mal den Prozess "per Hand" (hier posten, wie Du das machst), wenn er dann läuft (indem Du Dich einloggen kannst oder was auch immer), dann machst Du einen (Aufruf + Ausgabe bitte posten)

ps -ef | grep -v grep | grep <Dein Suchausdruck>; echo $?
Hier sollte Dein Exit Code 0 lauten. Dann das Ganze anders herum. Stoppe den Dienst "per Hand" (hier posten, Du das machst), wenn er dann gestoppt ist (also Deiner Meinung nach :D *ggg), dann machst Du wiederrum einen (Aufruf + Ausgabe bitte posten)
ps -ef | grep -v grep | grep <Dein Suchausdruck>; echo $?

Hier sollte richtigerweise keine Ausgabe erfolgen und Dein Exit Code 1 lauten.

Erst wenn das gewährleistet ist, dann können wir das Skript angehen ;)

Geschrieben

War schon am Passwort einrichten :D :D

Also den Server starte ich mit

./srcds_run -game cstrike +ip 134.155.50.35 -port 27015 +map de_dust2 +maxplayers 12

damit hab ich gesucht
 ps -ef | grep -v grep | grep srcds_run

Ergebnis:

root      4813  4795  0 16:44 pts/0    00:00:00 /bin/sh ./srcds_run -game cstrike +ip 134.155.50.35 -port 27015 +map de_dust2 +maxplayers 12

Stoppen kann man den Prozess nur mit dem kill befehl und dann kommt folgendes Ergebnis bei ps -ef | grep -v grep | grep <Dein Suchausdruck>; echo $?
 1

Aber bevor ich jetzt weiter erzähle. Mir ist gerade was aufgefallen.

Wenn ich den Script als root starte mit dem Befehl oben springt der Server an. Wenn ich das ganze als css user mache bringt der server mir nen fehler. liegt es vielleciht an den berechtigungen ? der script hat die berechtigung -rwxr-xr-x und ist besitzer sowie eigentümer.

Mfg

Feigling

Geschrieben

Also das Problem hat sich gelöst

Der letzte gepostete Stand von dem Script funktioniert. War warscheinlich nur ein Berechtigungsproblem von den Usern.

Danke für deine Hilfe Schlaubi

Mfg

Feigling

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...