CoD/UO Server automatisch restarten...

  • Mahlzeit,


    ich hab jetzt schon etliche Foren und NG's durchsucht, bin aber nirgendwo auf eine brauchbare Lösung gestoßen. Vielleicht kann mir einer von euch helfen!?


    Das Problem:
    Wie ihr vielleicht wißt (oder selber schon festgestellt habt), sind die CoD und UO Linux server nach dem Update auf 1.5 bzw 1.51 ziemlich "wackelig" geworden. Ich muß leider feststellen, dass häufig - aber in unregelmäßigen Abständen - die Server nicht mehr erreichbar sind, obwohl der Prozess ansich noch läuft. Da ich nicht rund um die Uhr am Rechner sitzen und die Server manuell restarten kann, suche ich jetzt ein Script, was mir die Arbeit abnimmt.


    Was bisher geschah:
    Ich habe diverse Scripte gefunden, die die Existenz bestimmter Prozesse überprüfen und diesen dann ggf. neu starten, falls er nicht existiert. Nun ist aber bei den Gameservern das Problem, dass der Prozess noch läuft (also noch existiert), man sich nur nicht mehr mit dem Gameserver verbinden kann. Das einzige, was hilft: Prozess beenden und neu starten. Allerdings ist das genau das Problem, was alle getesteten Scripts haben - wenn der Prozess noch läuft, greifen die nicht und der Server wird Nicht neu gestartet.


    Die Idee:
    Ich brauche also ein Script, das quasi als "Client" versucht, sich auf den Gameserver zu connecten. Gelingt dies, ist alles ok (der Server läuft dann wohl). Gelingt das nicht, soll der Prozess (sicherheitshalber) beendet und dann sofort neu gestartet werden.
    Das Ganze soll als CRON-Job alle 5 oder 10 Minuten laufen, damit keine größeren Unterbrechungen entstehen.


    Leider bin ich nicht so der Linux-Freak, um mir sowas selber zusammenzubacken - wenn mir daher jemand hier auf die Sprünge helfen könnte, bzw. mir einen Tip geben kann, wo ich ansetzen muß, wäre ich sehr dankbar.


    Danke im Voraus und einen schönen Tag noch.


    Grüße,
    Chris



    P.S: Sorry, wenn der Post jetzt so ellenlang geworden ist, aber ich wollte das so genau wie möglich beschreiben.
    Fasse mich das nächste Mal kürzer - ehrlich !!!
    :wink:

  • Die Client Lösung dürfte schwer werden, weil du schlecht einen Client auf den Server installieren kannst.


    Wie währe es wenn du prüfst ob auf den Port ein Dienst läuft, wenn nicht, neustarten. Setzt natürlich voraus, dass der Port wenn der Server sich aufgehängt hat nicht erreichbar ist.


    Zitat

    P.S: Sorry, wenn der Post jetzt so ellenlang geworden ist, aber ich wollte das so genau wie möglich beschreiben.
    Fasse mich das nächste Mal kürzer - ehrlich !!!


    Schreib lieber mehr als zu wenig, die Datenbank hat noch genug Platz und mit Postings wie "mein Server geht nicht" fängt nimand was an.

  • Hey Tobi,


    Zitat

    Wie währe es wenn du prüfst ob auf den Port ein Dienst läuft, wenn nicht, neustarten. Setzt natürlich voraus, dass der Port wenn der Server sich aufgehängt hat nicht erreichbar ist.


    Genau DAS habe ich mir auch gedacht. Das wäre - denke ich - die sicherste Methode, um festzustellen, ob der Server läuft oder nicht.
    Allerdings stellt sich jetzt auch hier genau mein Problem dar:
    Wie muß das Script (PHP/Perl) aussehen, damit das auch "sicher" funktioniert?


    Dieses PHP-Script hab ich mal auf meinen Webserver kopiert - es gibt aber ständig "ONLINE" aus, egal ob der Server läuft oder nicht:


    Da muß irgendwas falsch sein - aber was ?
    Da es ständig "ONLINE" als Status zurückgibt, ist doch die Verbindung zur angegebenen IP und dem Port erfolgreich. Aber das kann doch nicht sein, wenn auf dem Port kein "Dienst" lauscht, der Gameserver also nicht läuft?
    Oder mach ich da jetzt 'nen Denkfehler?


    Grüße,
    Chris

  • Versuch mal ob dir das was bringt:


  • UPDATE:


    So, ich hab nochmal recht heftig rumprobiert und rumgesucht und bin dabei auf etwas gestoßen, dass den Zweck erfüllt
    (basierend auf dem KKRCON Paket):



    Nachdem ich mir das KKRCON Paket heruntergeladen habe, mußte ich noch
    die Datei KKrcon.pm ins Verzeichnis /usr/lib/perl5/5.1.8/ (SuSe 9.1 Installation) verschieben, sowie
    die Datei kkrcon.pl nach /usr/bin/ verschieben.
    Dann hab ich noch das Skript an meine Serverdaten angepaßt und getestet.


    Soweit scheint das zu jetzt laufen. :D
    Werde das jetzt mal als CRON Job einrichten, 'ne Weile beobachten und entsprechend weitere Infos posten.


    Danke trotzdem - Grüße,
    Chris

  • NOCHMAL UPDATE:


    So, ich hab das ganze jetzt 48 Stunden lang als CRON Job (alle 10 Minuten) durchlaufen lassen und es funktioniert wunderbar.
    Ist der Gameserver "frozen", d.h. der Prozess läuft noch, aber man kann sich nicht mehr verbinden, wird der noch laufende Prozess beendet und anschließend neu gestartet.
    Ist der Prozess komplett weg, wird er gestartet.
    Läuft der Prozess und der Gameserver ist erreichbar, passiert nichts.
    Genau, wie ich mir das vorgestellt hatte. :D


    Wenn keinen Fragen mehr sind, kann der Thread "geclosed" werden.
    Danke nochmal für Tips und Anregungen.

  • Danke Sausalito das du die Lösung zu dem Problem hier geschrieben hast :D


    Ich werde den Thread nicht "closen", vielleicht hat ja irgendwann nochmal jemand ne Frage dazu.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!