Java Error

  • Hallo liebes Forum,
    ich habe auf meinem vServer einen Minecraft Server laufen, für diesen habe ich einen Controlpanel programmiert der auch funktioniert.
    Den Minecraftserver lasse ich stoppen mit "killall java" es hat auch immer funktionert.
    Der Server ist nun aber schon ein paar mal gecracht und dann hat dieses nicht funktioniert, der Server blieb online.
    Dann bin ich in die screen session gejoint und dann stand dort der error:
    e forcibly terminated



    Was bedeuted dieses?


    Julius

  • OutOfMemory = zu wenig RAM


    Übrigens ist es nicht sonderlich gut Java einfach zu killen.
    Da geht dir unter umständen ein Teil der Welt oder des Inventars bei drauf.
    Minecraft Server besitzen einen "stop" befehl um vernünftig zu beenden und zu speichern.

  • Man stoppt einen Minecraftserver nicht in dem man den Java Prozess abschiesst, dabei darf man sich dann über Fehler dieser Art nicht wundern.


    Wieso nicht schickt man nicht den "normalen" stop Befehl in die Screensession mit einem entsprechenden Script?

  • Zitat von [netcup] Alex;36646

    Man stoppt einen Minecraftserver nicht in dem man den Java Prozess abschiesst


    kill(all) sendet ein SIGTERM an einen Prozeß. Das hat mit "Abschießen" nichts zu tun.

    "Security is like an onion - the more you dig in the more you want to cry"

  • Es ging mehr darum das damit der "eigentliche" Prozeß, also Minecraft nicht so beendet wird, wie es der Hersteller empfiehlt bzw. wie es generell empfohlen ist. Wenn ein Dienst eine stop Funktion hat, so nutzt man diese sonst darf man sich über gewisse Fehler, vor allem bei Java Prozessen, nicht wundern. Man kann mit einem Script, wenn man sich schon ein Control Panel baut, problemlos Befehle in eine SCREEN Session übergeben damit diese "im Screen" ausgeführt werden, so auch z.b. einen stop Befehl für den Minecraft Server. Dies verhindert unter anderem gecrashte Map Files und ist zudem auch ein "failsafe" beenden des Servers.

  • Das mit dem Ram kann nicht sein habe 8 gb und er hat einen durchschnittlichen Verbrauch von 1,5 gb ram.


    Nochmal zum killen von Java.
    Leider sehe ich sonst keine andere Möglichkeit den Server zu stoppen, da es mir nicht gelingt in die screen session zu joinen und ein stop zu senden.


    Wenn ihr wisst, wie ich Minecraft anders stoppen könnte, lasst es mich hören.


    Inmoment mache ich es so:


    Code
    $connection = ssh2_connect('localhost', 22);
    		ssh2_auth_password($connection, 'root', $pw_ssh);
    		$stream = ssh2_exec($connection, 'killall java');
    		ssh2_exec($connection,"exit");
  • Zitat von [netcup] Alex;36646

    Man stoppt einen Minecraftserver nicht in dem man den Java Prozess abschiesst, dabei darf man sich dann über Fehler dieser Art nicht wundern.


    Wieso nicht schickt man nicht den "normalen" stop Befehl in die Screensession mit einem entsprechenden Script?


    Wie sende ich denn diesen Befehl?

  • Einfach mal "man screen" verwenden, dort wird der notwendige Parameter erklärt, wobei tmux da in der Handhabe weitaus einfacher ist, gerade wenn es um komplexe Befehle geht, auch wenn es diese nun bei Minecraft z.B. weniger gibt als bei Source-Engined Spielen z.B. von Valve.

  • So habe es hinbekommen:)

    Code
    $connection = ssh2_connect('localhost', 22);
            ssh2_auth_password($connection, 'root', $pw_ssh);
            $stream = ssh2_exec($connection, 'screen -S minecraft -p 0 -X stuff "say Der Server geht offline$(printf \\\r)"');
            $stream = ssh2_exec($connection, 'screen -S minecraft -p 0 -X stuff "stop$(printf \\\r)"');
            ssh2_exec($connection,"exit");
  • Zitat von Julius K.;36681

    So habe es hinbekommen:)

    Code
    $connection = ssh2_connect('localhost', 22);
            ssh2_auth_password($connection, 'root', $pw_ssh);
            $stream = ssh2_exec($connection, 'screen -S minecraft -p 0 -X stuff "say Der Server geht offline$(printf \\\r)"');
            $stream = ssh2_exec($connection, 'screen -S minecraft -p 0 -X stuff "stop$(printf \\\r)"');
            ssh2_exec($connection,"exit");


    Du solltest es unterlassen deinen Server mit Root zu starten.


    MfG
    Impact