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).

    Menschen die keine Ironie verstehen finde ich super!

  • 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