Mc server über Crontab starten

  • Hi! Habe einen RPI 4 8gb und habe einen Mc server darauf installiert. Nun will ich diesen mittels Crontab automatisch starten und beenden. Macht dieser Crontab Sinn ?

    # m h dom mon dow command
    * 16 * * 1-4 cd /home/pi/MC > /dev/null 2>&1
    * 16 * * 1-4 java -Xmx6G -jar paper-1.18.1-145.jar > /dev/null 2>&1
    * 22 * * 1-4 stop > /dev/null 2>&1
    * 16 * * 5-7 cd /home/pi/MC > /dev/null 2>&1
    * 16 * * 5-7 java -Xmx6G -jar paper-1.18.1-145.jar > /dev/null 2>&1
    * 2 * * 5-7 stop > /dev/null 2>&1

  • Macht dieser Crontab Sinn

    Nein!

    Schreibe Deine Befehle in eine Script-Datei, nutze dabei immer und überall absolute Pfade. Mache diese Datei ausführbar und rufe sie dann im Cronjob - oder besser in einer systemd service.unit - auf.

    Dabei bitte die Logik deiner Aufrufe überprüfen und ggf. "man 5 crontab" noch einmal lesen (speziell was das * in der Minuten-Spalte betrifft).

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Bash
    #!/bin/sh
    cd /home/pi/MC
    sleep 5
    java -Xmx4G -jar paper-1.18.1-145.jar -nogui
    sleep 28800
    stop

    Macht das mehr sinn wenn ich das mit nur einem Crontab um 18:00 ausführe ?

    edit:

    Hab den sleep mit 30 getestet. Server schaltet sich leider nicht aus :(

  • Der Server schaltet sich nicht aus weil der Stop befehl sehr wahrscheinlich nicht im Server eingesetzt wird.

    Du müsstest da wahrscheinlich eher nach einem Befehl suchen der den Befehl explizit zum Server schickt, so wird er nur in der normalen Kommandozeile ausgeführt.

  • Der Server schaltet sich nicht aus weil der Stop befehl sehr wahrscheinlich nicht im Server eingesetzt wird.

    Du müsstest da wahrscheinlich eher nach einem Befehl suchen der den Befehl explizit zum Server schickt, so wird er nur in der normalen Kommandozeile ausgeführt.

    Wo finde ich so einen "expliziten Befehl" oder ist es einfacher "stop" in der Serverkommandozeile auszuführen?

    Und wie geht das (kenne mich mit Linux nicht gut aus )

  • Ich habe nochmal bei mir geschaut und gesehen das ich in dem fall nicht den stop Befehl benutzt habe, sondern den quit.

    Wenn du im laufenden betrieb gleichzetig noch sachen installieren möchtest oder andere dinge mit dem PI.

    Würde ich dir empfehlen "screen" zu benutzen. Wenn du interesse hast kann ich dir dazu meinen Script zeigen, der automatisch beim starten des Pi´s ausgeführt wird.

  • Einfacher wäre es den Server mittels RCON zu beenden.


    Ich würde auch mal versuchen ein SIGINT als Signal an den Prozess zu senden und dann schauen, ob der Server normal herunterfährt oder ob er crasht.

    Ein Sigint sendet man mittels kill.

    Code
    kill -s SIGINT prozess_id
  • Bash
    #!/bin/sh
    cd /home/pi/MC
    sleep 5
    java -Xmx4G -jar paper-1.18.1-145.jar -nogui
    sleep 28800
    stop

    Macht das mehr sinn wenn ich das mit nur einem Crontab um 18:00 ausführe ?

    edit:

    Hab den sleep mit 30 getestet. Server schaltet sich leider nicht aus :(

    1. Niemals -Xmx4G machen. Du hast ein 4Gb Modell und die JVM (Java-Virtual-machine) und das Betriebssystem des Pi benötigten selbst einiges an Ram und wenn du soviel zuweist kann das durchaus Probleme verursachen
    2. Nutze am besten einfach screen für deinen Server, so könntest du z.B. eine start.sh machen und eine stop.sh. Ist wesentlich weniger kompliziert als irgendwas mit sleep...

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!