|
|
Serverrcon? (per Shell-Zugriff oder Server-Start-Script) |
crossshooter
Tastatur-Vernichter
Dabei seit: 22.04.2006
Beiträge: 1.638
|
|
Poste mal das Startscript. Wenn das nur dafür da ist zu überprüfen ob der Server läuft musst du den Server "normal" per ./cod2_lnxded + Startparameter starten... Vielleicht hat es ja auch ne Option, den Server normal zu starten.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von crossshooter: 08.02.2007 10:32.
|
|
|
|
|
Kelli
... sehr viel alleine
Dabei seit: 09.11.2006
Beiträge: 2.504
|
|
Original von HarryBB
per shell? Das wollte ich mal genauer erklärt haben. Ich nutze für unseren Linuxserver Winspc. Eine Startsh datei ist auch dabei damit der selber starten kann wenn er mal down geht. aber wenn das mal nicht klappt müsste man was genau tun??
Das ist zu Vage. Wenn was nicht klappt? Man kann folgendes machen:
Script 1 Startet Call of Duty, und schaut ständig nach ob der Prozess noch läuft. Jetzt können 3 Zustände eintreten:
1) Der COD Prozess crasht oder jemand gibt in der Console \rcon quit ein. Dann startet Script 1 den COD Prozess einfach wieder, und der Server läuft mit der startconfig ganz normal neu an.
2) Der Prozess für CoD läuft noch, aber der Server hat keine Map geladen, oder er hängt beim Mapwechsel z.B. wegen einer incombatiblen Custommap, mod etc.. (Timeout, man kommt nicht ran) dann passiert garnix weil Script 1 nur sieht das der CoD Prozess noch läuft. Dann muss sich jemand per Putty einloggen und entweder beide oder zumindest den CoD Server abschießen (kill)
3)Beide Script1 und CoD sterben, warum auch immer. Dann muss sich jemand per Putty einloggen und es wieder von Hand starten.
Wenn du sowas suchst kann ich dir das posten. Aber kann sein das deines schon sowas macht.
__________________ „ Allah ist Groß, und wir sind armselige Tröpfe mit unseren ganzen Wissenschaften Herrlichkeit.“
Dieser Beitrag wurde 420 mal editiert, zum letzten Mal von der Bundesregierung Niemand: Heute, 11:42.
|
|
|
|
|
yoda
Böser Admin
Dabei seit: 21.01.2004
Beiträge: 12.269
|
|
Denke mal, so was grundsätzlich mal mit einer Erklärung zu posten dürfte für einige interessant sein... Wär klasse, wenn Dir das nix ausmacht...
Geht doch in diese Richtung, oder? (Hab nur begrenzte Linux-Kenntnisse...)
https://www.opferlamm-clan.de/?menu=234
__________________ "Fürs Internet sollte das Baumhaus-Prinzip gelten:
Wer zu alt ist, um ohne Hilfe reinzukommen, soll uns darin auch keine Vorschriften machen."
Diskutiere nie mit einem Idioten - zuerst zwingt er Dich auf sein Niveau herab und dann schlägt er Dich mit Erfahrung...
|
|
|
|
|
Kelli
... sehr viel alleine
Dabei seit: 09.11.2006
Beiträge: 2.504
|
|
Original von yoda
Denke mal, so was grundsätzlich mal mit einer Erklärung zu posten dürfte für einige interessant sein... Wär klasse, wenn Dir das nix ausmacht...
Mir? Nööö. Was immer ich verbreche darf von jeden überall verwendet werden. Ich wundere mich immer das es Leute gibt die sowas auch noch haben wollen
Ich muss aber dazu sagen das das Grundgerüst (Das Prinzip mit der PID und sich selber aufrufen über FORK) nicht von mir ist, ich weiß nichtmehr ob das ein Artikel über Bashprogrammierung war oder ein anderer Post in irgendeinen Forum, keine Ahnung. Ich hab es nur für meine Bedürfnisse etwas angepasst.
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
|
#!/bin/sh
# Benutzer Kram
PORT="28000"
##### Das Startscript sollte im Namen den Port haben, also start28000, start28960 etc..
HOMEDIR="/home/ios/.cod2-28000"
BASEDIR="/home/ios/games/cod2"
MOD="ios"
CONFIG="cod2clanserver.cfg"
# Log und Pid
LOGFILE=$HOMEDIR/server.log
INITPIDFILE=$HOMEDIR/init.pid
PIDFILE=$HOMEDIR/cod.pid
# Ab hier wirds spannend
COMMAND="cod2_lnxded +set fs_basepath $BASEDIR/ +set fs_homepath $HOMEDIR/ +set
fs_game $MOD +set dedicated 1 +set net_port $PORT +exec $CONFIG +map_rotate"
case "$1" in
start)
if test -f $INITPIDFILE ; then
echo "Startscript lauft schon";
elif test -f $PIDFILE ; then
echo "Server laeuft schon";
echo "Nix zu tun, Probier mal die Option check";
echo "Sollte er ganz sicher nicht laufen von Hand die init.pid und cod.pid aus $HOMEDIR/pid loeschen.";
else
echo Starte Server Port $PORT
$0 fork > $HOMEDIR/output$PORT.log 2>$HOMEDIR/output$PORT.log &
echo $! > $INITPIDFILE
disown
fi
;;
stop)
if test -f $INITPIDFILE ; then
if ps -p `cat $INITPIDFILE` | grep start$PORT 1> /dev/null 2> /dev/null ; then
echo killing start$PORT
kill -TERM `cat $INITPIDFILE` 1> /dev/null 2> /dev/null
sleep 2
kill -9 `cat $INITPIDFILE` 1> /dev/null 2> /dev/null
fi
rm $INITPIDFILE
else
echo Finde das Startscript nicht.
fi
if test -f $PIDFILE ; then
if ps -p `cat $PIDFILE` | grep cod2_lnxded 1> /dev/null 2> /dev/null ; then
echo killing cod2_lnxded
echo nun ist Schluss mit Zocken
kill -TERM `cat $PIDFILE` 1> /dev/null 2> /dev/null
sleep 2
kill -9 `cat $PIDFILE` 1> /dev/null 2> /dev/null
fi
rm $PIDFILE
else
echo Hab den Server nicht gefunden
echo Nix zu tun
fi
;;
restart)
$0 stop
$0 start
;;
check)
## Entfernt die PID wenn der Server nicht leuft, ist aber unsicher bei mehreren
Servern.
if test -f $INITPIDFILE ; then
if ! ps -p `cat $INITPIDFILE` | grep start$PORT $1> /dev/null 2> /dev/null ; then
if test -f $PIDFILE ; then
if ps -p `cat $PIDFILE` | grep ucc 1> /dev/null 2> /dev/null ; then
kill -TERM `cat $PIDFILE` 1> /dev/null 2> /dev/null
sleep 2
kill -9 `cat $PIDFILE` 1> /dev/null 2> /dev/null
fi
rm $PIDFILE
fi
rm $INITPIDFILE
$0 start > /dev/null
fi
else
if test -f $PIDFILE ; then
if ps -p `cat $PIDFILE` | grep cod2_lnxded 1> /dev/null 2> /dev/null ; then
kill -TERM `cat $PIDFILE` 1> /dev/null 2> /dev/null
sleep 2
kill -9 `cat $PIDFILE` 1> /dev/null 2> /dev/null
fi
rm $PIDFILE
fi
$0 start > /dev/null
fi
;;
fork)
while [ true ] ; do
$BASEDIR/$COMMAND &
echo $! > $PIDFILE
wait
echo "sollte jetzt laufen."
done
;;
*)
echo "Usage: $0 {start|stop|restart|check}"
;;
|
|
Geändert werden muss nur:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
# Benutzer Kram
PORT="28000"
##### Das Startscript sollte im Namen den Port haben, also start28000, start28960 etc..
HOMEDIR="/home/KK/.cod2-28000"
BASEDIR="/home/KK/games/cod2"
MOD="ios"
CONFIG="cod2clanserver.cfg"
|
|
Ohne Mod einfach
Code angehängt. Klicke hier zum Ein-/Ausblenden
BASEDIR ist das Verzeichnis von COD2, HOMEDIR ist nur wichtig bei mehreren Servern, ansonsten kann man dasselbe eintragen wie bei BASEDIR
Wie oben schon drinsteht sollte das Script unter dem Namen startport gespeichert werden. Einmal ruft es sich selber mit diesen Namen auf, das müsste man ansonsten an diversen Stellen anpassen, auf der anderen Seite vereinfacht das die Fehlersuche erheblich, da dann ein ps -ef |grep port alle Prozesse anzeigt die dazugehören. Also wenn der Server auf port 28960 laufen soll, trage den Port 28960 oben bei # Benutzer Kram ein und bennene das Script
start28960
Ich benutze es so für 4 verschiedene Server.
Es macht die Dinge wie oben beschrieben, die Ausgabe der Console liegt dann im COD (home) Verzeichniss unter output-port.log
Noch ein Hinweis, früher hatte ich hier:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
|
COMMAND="cod2_lnxded +set fs_basepath $BASEDIR/ +set fs_homepath $HOMEDIR/ +set
fs_game $MOD +set dedicated 1 +set net_port $PORT +exec $CONFIG +map_rotate
|
|
noch +set sv_punkbuster 1 drinstehen, das hab ich mittlerweile entfernt da es ja auch ohne geht wenn es in der cfg richtig eingetragen ist.
Wer möchte ändert es also noch in
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
|
COMMAND="cod2_lnxded +set fs_basepath $BASEDIR/ +set fs_homepath $HOMEDIR/ +set
fs_game $MOD +set dedicated 1 +set net_port $PORT +set sv_punkbuster 1 +exec $CONFIG +map_rotate
|
|
Original von yoda
Geht doch in diese Richtung, oder? (Hab nur begrenzte Linux-Kenntnisse...)
https://www.opferlamm-clan.de/?menu=234
Ist eigentlich ähnlich, dieses hier Verzichtet auf screen, und ich hab bei dem anderen mal ebend schnell drübergeschaut, da wir der Server nicht wieder neugestartet wenn man \quit eingibt. Glaub ich rausgelesen zu haben? (Das macht hier das "fork" der ständig neu aufgerufen wird (while [true] ...) )
Es gibt genau dann ärger wenn mal beide Scripte gekillt werden, (z.B. bei Shutdown des Servers) dann ist die Datei init.pid noch da und das Script wird behaupten das alles super ist, aber nichts geht. Da braucht man dann etwas Ahnung damit man dem auf die Schliche kommt. (die .pid Dateien löschen, eventuell vorhandene Zombies killen etc..) Ist mir aber bis jetzt nur dann passiert wenn der root neu gestartet wurde und ich vergessen habe die Server vorher anzuhalten. Also wer mit https://www.opferlamm-clan.de/?menu=234 glücklich ist hat absolut keinen Grund das zu ändern. Wer auf screen verzichten möchte dem ist es vielleicht noch nützlich.
Wenn wer weiß von wem die Original Idee mit dem PID und fork) ist: melden. Ich will das auf keinen Fall als auf meinen Mist gewachsen verstanden wissen.
__________________ „ Allah ist Groß, und wir sind armselige Tröpfe mit unseren ganzen Wissenschaften Herrlichkeit.“
Dieser Beitrag wurde 420 mal editiert, zum letzten Mal von der Bundesregierung Niemand: Heute, 11:42.
|
|
|
|
|
Kelli
... sehr viel alleine
Dabei seit: 09.11.2006
Beiträge: 2.504
|
|
Original von HarryBB
Was muss man gemau eingeben um den Server dann zu starten...
1. Wenn AWE läuft (Modordner)
2. Wenn extreme Mod läuft (modordner)
3. Wenn er nichts drauf hat
Kommt auf das Script drauf an.
Original von HarryBB
Ausserdem kann es ja mal sein das der Server irgendwie hängt. MANCHMAL reicht ja ein Mapchange. Aber dann müsste ich ja den Server stoppen. Wie lautet der Befehl wenn ich den Server stoppen will und dann neustarte?
Kommt auf das Script drauf an.
__________________ „ Allah ist Groß, und wir sind armselige Tröpfe mit unseren ganzen Wissenschaften Herrlichkeit.“
Dieser Beitrag wurde 420 mal editiert, zum letzten Mal von der Bundesregierung Niemand: Heute, 11:42.
|
|
|
|
|
Kelli
... sehr viel alleine
Dabei seit: 09.11.2006
Beiträge: 2.504
|
|
Original von HarryBB
Ach so. du meinst wenn ich einen sogenannte Wtrchdog laufen habe muss ich mit putty sorge tragen das der Watchdog nur neu gestartet werden muss?
Naja, ne eigentlich andersrum, du musst den CoD Server "richtig" abschießen, der Wachhund sollte ihn dann neu starten. Wenn der CoD Prozess noch läuft, nur der Server hängt bei irgendeiner Karte in Endlosschleife döst der Hund weiter vor sich hin. Er schaut ja nur: CoD Prozess lebt? Ja/Nein
Original von HarryBB
Wenn dasd der Fall ist müste ich das skript hier mal posten damit ihr mir das geheimnis verraten könnt??
Dachte für Server stoppen und starten gibt es ziemlich einleitliche Befehle nur das der Pfad anders ist?
Naja, es hat sich start | stop | restart | und vielleicht noch status "eingebürgert" (Weil die init.d Scripte das genauso machen) Du kannst es also mit einem
./meinscript.sh restart
mal probieren. Aber Gottgegeben ist das nicht, es könnte genauso
./meinscript.sh gurkeneintopf
sein.
__________________ „ Allah ist Groß, und wir sind armselige Tröpfe mit unseren ganzen Wissenschaften Herrlichkeit.“
Dieser Beitrag wurde 420 mal editiert, zum letzten Mal von der Bundesregierung Niemand: Heute, 11:42.
|
|
|
|
|
|
|
|
Impressum ||Datenschutzerklärung
|