Serverstartscript

N

Neomhor

Grünschnabel
Hallo Leute...

Ich hab mir neulich ein kleines Serverstartscript gebaut in Form
eines ordinären Menüs... Klappt auch alles soweit wunderbar.

Hab nur folgendes Problem. Die Server werden alle im screen gestartet
und sollen nicht zusammen laufen, sondern nur alle einzeln, da immer
der gleiche Port verwendet werden soll...

Das Script sieht wie folgt aus (Auszug):

#!/bin/sh
#

menu () {
clear
echo "Bla bla Servers"
echo "Which server should be started?"
echo ""
echo "1) Counter-Strike"
echo "2) Day of Defeat"
echo "3) The Trenches"
echo "4) Counter-Strike Condition Zero"
echo "5) Death-Match Classic"
echo "6) Team-Fortress Classic"
echo "7) Half-Life Deathmatch"
echo "8) Counter-Strike 1.5 Steam"
echo "9) Counter-Strike:Source"
echo "A) Day of Defeat:Source"
echo "B) Half-Life2 Deathmatch"
echo "C) Counter-Strike WON"
echo ""
echo "0) quit"
echo ""
echo -n "Enter a digit: "
}

menu

while read GAME
do

if [ "$GAME" == "0" ]
then
exit 0
fi



case "$GAME" in
1)
cd /ordnerdes/jeweiligenservers/server1
screen -AmdS server1 ./hlds_run -game cstrike -secure +maxplayers 6 +map de_dust2 -port 28015 -pingboost 3 -autoupdate
clear
echo ""
echo "Start game > Counter-Strike <... done"
echo ""
exit 0
;;
2)
cd /ordnerdes/jeweiligenservers/server1
screen -AmdS server1 ./hlds_run -game dod -secure +maxplayers 6 +map dod_anzio -port 28015 -pingboost 3 -autoupdate
clear
echo "Start game > Day of Defeat <... done"
exit 0
;;


[...]


0)
clear
echo ""
echo "Quitting without any action."
echo ""
exit 0
;;
*)
menu
;;
esac
done

exit 0


Da ich die PID für die Server ja nicht vergeben kann, muß ich also den jeweilgen screen terminieren...
Doch wie kann ich das am besten in dieses script einbauen ?

Vielleicht kann mir da ja jemand von euch weiterhelfen :)
 
Zuletzt bearbeitet:
Du kannst Prozesse - neben "kill $PID" - auch über den Prozessnamen killen (also der Name, der dir in ps angezeigt wird).
Ich denke (falls ich das nun nicht falsch verstehe), das sollte die einfachste Lösung zu deinem Zeil sein.
killall $Prozessname
 
Erstmal danke für die schnelle Antwort Zico

Ok war mein Fehler, hab vergessen was zu erwähnen...
Klar könnte ich jetzt die Server über

killall hlds_run

Da hast du schon recht mit...

Nun kommt mir allerdings wieder ein anderes Problem in die quere ^^ (wie sollte es auch anders sein)

Auf dem Server laufen noch weitere hlds_run Prozesse (also Gameserver die nichts mit meinem Startscript zutun haben), die ja nicht mit
beendet werden sollen... :D

Wie gesagt, mein Fehler, is eben früh am morgen ^^
 
Hehe, nein, es war mein Fehler :)
Hab mal wiede rnicht richtig gelesen, denn in deinem script steht ja schon drin, dass du die server über screen / hlds_run startest. :(

Wirf mal einen genauen Blick in die mangpage von screen (also: man screen , weisst du sicher, aber kann nie schaden :) ). Dort steht zu einem, dass du screens auf unterschiedlichen Terminals laufen lassen kannst. Das könnte ja eigentlich schon ein Schritt in die richtige Richtung sein aber irgendwie gefällt mir die Lösung nicht ooo ganz (früh am Morgen).
Grab dich da mal durch, denn da stehen noch viele andere Parameter für Screen-Namen usw. drin. Vllt findes du dort den richtigen Ansatz (und eine Idee, die ich grad nicht habe).
 
Da haste mich aber jetzt dann doch noch auf die richtige Spur gebracht...
Und da sag nochmal einer Lesen würde nicht bilden...

Mit dem folgenden Befehl hab ichs dann geschafft

screen -XS sessionname quit

Damit wird dann der quit Befehl in den screen sessionname geschickt und >Puff<
aus isser :D

Danke nochmals Zico
 
Zuletzt bearbeitet:

Ähnliche Themen

ip6tables Problem

verzeichniss suche funktioniert nicht

xrandr: cant open display

Prozess aus eigenem Init script wird gekillt

ausführen von screen bei boot

Zurück
Oben