kostenloser Webspace werbefrei: lima-city


Shell schleife beenden

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Hallo,

    ich habe folgendes Problem, zu dem ich keine Lösung parat habe:

    Ich starte über ein Shell-Script einen Gameserver und möchte, dass er, wenn er abstürzen sollte, automatisch neu gestartet wird.
    Bisher habe ich das so gemacht:

    while true; do
    command_to_start_server
    done

    Das klappt auch perfekt, aber ich habe ein Problem:
    Wenn ich den Server herunterfahren möchte, startet er immer neu.
    Ich sende (über ein anderes shell-script) einen Befehl an den Server, damit er herunterfährt.
    Er speichert die Einstellungen und dann wird der Prozess beendet.
    Leider wird der Prozess dann neu gestartet, da er sich ja noch immer in dem "while true" befindet.

    Kennt ihr einen Lösungsweg, wie ich dafür sorgen kann, dass der Server in diesem speziellen Fall nicht neu gestartet wird?

    Vielen Dank schonmal im Voraus

    PS: bei dem Server handelt es sich um eine *.jar - Datei, die mittels dem "java"-Befehl unter Ubuntu ausgeführt wird.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Mach es so:
    while [ ! -e "kill_server" ]; do
    command_to_start_server
    done
    und um zum stoppen des Servers erstellst du die Datei "kill_server"
  4. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Vielen Dank :)

    Das funktioniert super.
  5. asp-verein-freital

    asp-verein-freital hat kostenlosen Webspace.

    Nur zur Vollständigkeit: Mit
    break;
    kann man in Shell Skripten Schleifen abbrechen. Allerdings halte ich so eine Lösung für "unschön", weshalb ich die oben genannte Lösung mit Abbruchbedingung als Schleifenbedingung als wesentlich eleganter erachte.
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    asp-verein-freital schrieb:
    Nur zur Vollständigkeit: Mit
    break;
    kann man in Shell Skripten Schleifen abbrechen. Allerdings halte ich so eine Lösung für "unschön", weshalb ich die oben genannte Lösung mit Abbruchbedingung als Schleifenbedingung als wesentlich eleganter erachte.
    Meinst du das etwa so:
    while true; do
    	command_to_start_server
    	[ ! -e "kill_server" ] && break
    done
    Das ist in der Tat unschön (eher »hässlich«).

    Der Grund: bei
    while true
    wird das Kommando
    true
    1x pro Schleifendurchlauf gestartet. DANACH wird in der Schleife [ gestartet und gegebenfalls break, um die Schleife zu stoppen.
    Wenn die Abbruchbedingung in der Schleife gleich richtig gesetzt wird, wird nur ein einziges mal [ gestartet und es werden 2 weitere Programmaufrufe eingespart.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!