Archiv verlassen und diese Seite im Standarddesign anzeigen : screen COD automatisch neu starten
Spooky_1999
19.06.05, 16:34
Hallo
Mein Call of Duty Server beendet sich automatisch nach einigen Tagen - das scheint aber bei anderen auch zu passieren.
Wie muss das Script aussehen, dass jede minute prüft ob der Screen "COD" verhanden ist und wenn nicht dann neu startet.
Danke
spooky
Herr Kommisar
20.06.05, 09:02
hi,
1. server mit diesem befehl starten
screen -A -m -d -S "cod" ./cod_lnxded + optionen
wenn du den server mit root starten willst dann so
(is nich besonders günstig den server mit root zu starten)
2 datei anlegen im verzeichnis /root/bin/game_restart.sh
#! /bin/sh
name="cod"
log="/tmp/game.log"
frage=`screen -ls | grep -c "$name"`
if [ "$frage" -lt "1" ]
then
kill `ps aux | grep -v grep | grep -i screen | grep -i $name | awk '{print $2}'` >>$log
screen -A -m -d -S "cod" ./cod_lnxded + optionen >>$log
echo "Neustart $name" >>$log
else
echo "$name ist gestartet ($frage)" >>$log
fi
exit 1
2. cronjob erstellen
*/1 * * * * root /root/bin/game_restart.sh
und jetzt sollte das programm jede minute den server abfragen
musst natürlich oben deinen server eintragen also ich glaube der heisst cod_lnxded
tipfehler inclusive
oder einfacher
mach ein startskript mit einem loop drin
#!/bin/bash
while true; do
./cod_lnxded ...
done
und das dann in einem screen starten mit
screen -dmS codserver /pfad/zum/startskript
btw, nie, niemals und unter keinen umständen einen gameserver als root starten
Hi,
habe auch mal versucht das oben gennante script zu testen,aber leider startet es mir den server nicht neu.
habe ein cod-uo server 1.51b
cron führt mir die game_restart.sh aus,aber der server startet nicht.
hier mal mein script:
#!/bin/bash
name="coduo"
log="/tmp/game.log"
frage=`screen -ls | grep -c "$name"`
if [ "$frage" -lt "1" ]
then
kill `ps aux | grep -v grep | grep -i screen | grep -i $name | awk '{print $2}'` >>$log
screen -A -m -d -S "coduo" ./coduo_lnxded +pb_sv_disable +exec coduo-merciless.cfg +set fs_game merciless_uo +set dedicated 0
+map_rotate >>$log
echo "Neustart $name" >>$log
else
echo "$name ist gestartet ($frage)" >>$log
fi
exit 1
die variable "name" ist doch der screen name oder?
das screen kommando mit server variablen funktioniert aber,kann den server darüber starten und er läuft.
kann mir jemand sagen was falsch ist?
mfg wittman
@freeze
hi,
hab dein script mal ausprobiert,das funktioniert wunderbar....
meine frage ist nur,wenn ich in der console den server mir "quit" beende dann startet er neu,aber was ist wenn der ganze screen beendet wird aus irgendeinem grund,dann greift das script nicht richtig?
was kann man da machen?
thx,
gruss wittman
imho ist screen sauberer programmiert als alle gameserver, deshalb ist es eher unwahrscheinlich, dass dir screen absemmelt.
ausserdem, wie willst du den gameserver denn dann beenden (ausser mit 'nem shutdown)?
ja stimmt schon,ich frage nur weil mein server schon ab und zu abgestürzt ist und dabei ist auch der screen von dem codserver mit dem ich ihn ja gestartet habe auch beendet hat.
ist das normal wenn der cod server sich beendet auch der dazu gehörige screen beendet wird?
wenn ja müsste dein script ja greifen und den screen auffangen und den server neustarten,richtig?
danke erstmal für deine antwort,
gruss wittman
In Deinem obigen script fuer cron fehlt anscheinend
cd /path/to/cod
(vor dem screen befehl)
ist das normal wenn der cod server sich beendet auch der dazu gehörige screen beendet wird?
Ja.
Moeglicherweise gibts es eine Option fuer screen, die das unterbindet, aber es macht normalerweise wenig Sinn ein terminal zu emulieren, wenn nichts darin laeuft. Selbst in Deinem putty oder xterm window laeuft immer etwas (auch wenn gar nichts passiert) - naemlich die bash.
Du koenntest spassenshalber mittels
srceen -dmS test bash
eine bash in einer screen session betreiben,
dann in den Vordergrund holen:
screen -r test
und nun beliege programme/befehle ausfuehren z.B Deinen cod_server
mit ctrl+a +d screen wieder in den Hintergrund schicken
Wenn Du nun den server beendest, laeuft screen weiter, weil die bash ja noch da ist.
erst wenn Du auch diese killst (bzw. screen wieder in den Vordergrund holst und exit tippst) wird sich screen auch beenden.
ja stimmt schon,ich frage nur weil mein server schon ab und zu abgestürzt ist und dabei ist auch der screen von dem codserver mit dem ich ihn ja gestartet habe auch beendet hat.
Wenn dein Server abstürtzt wird wohl erst mal garnix mehr gehn.
das ist aber dann auch kein fehler vom game oder screen.
ist das normal wenn der cod server sich beendet auch der dazu gehörige screen beendet wird?
nein, der gameserver läuft in einer schleife. diese schleife ist ist ein prozess, der im screen läuft. d.h., dass die schleife den gameserver immer wieder neu startet, wenn er aus irgendeinem grund beendet wird.
wenn ja müsste dein script ja greifen und den screen auffangen und den server neustarten,richtig?
wie oben bereits erklärt, startet das skript nicht screen sondern den gameserver.
Hallöchen..
Ich weiss das man alte Themen normalerweise nicht "ausgräbt"..
Jedoch funktioniert das irgendwie nicht bei mir.
Habe oben alles so gemacht, wie gesagt wurde - jedoch sagt er in der Mail immer, das ein Kommando nicht gefunden wurde.. Bsp: "/bin/sh: root: command not found"
Dann noch eine Frage:
Die game_restart.sh führt ja screen aus, wenn kein screen vorhanden ist.
Aber woher weiss diese Datei, wo die Dateien zum ausführen des Servers liegen?
Mein Server liegt z.B. in /home/ordnername/
Die game_restart.sh liegt, wie oben beschrieben in "/root/bin/"
Wenn ich den Cronjob eintrage, wie oben beschrieben, zeigt er mir, wie ich oben schrieb, invalid commando an.
Weiss einer Rat?
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.