Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

CSS Server Start Script

Empfohlene Antworten

Veröffentlicht

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

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


#!/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.

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

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.

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?

woher nimmst Du denn eigentlich die Info, dass

der Process srcds_r heißt nachdem Du greppen musst?

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 ;)

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.