From aaa2e0042b532e1f972cbc9734849cf2766933b4 Mon Sep 17 00:00:00 2001 From: tmueller <tmueller@cl.uni-heidelberg.de> Date: Thu, 8 Apr 2021 19:41:26 +0000 Subject: [PATCH] Implement ability to enter commands when attached, may be in further development get externalised as standalone binaries --- papermc.sh | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/papermc.sh b/papermc.sh index 7157e39..685d1a6 100755 --- a/papermc.sh +++ b/papermc.sh @@ -55,6 +55,11 @@ exec_stop () { exit 0 } +start_server () { + screen -dmS mc java -server -Xms${MC_RAM} -Xmx${MC_RAM} ${JAVA_OPTS} -jar ${JAR_NAME} nogui #Startupbefehl inkl. ENVs vom Dockerfile + screen -wipe # sollte der server mal abstürzen oder sont irgednwie ein fehler auftreten wird damit zombiesessions entfernt. +} + while true do screen -S mc -X select . ; SCRUN=$? #Queryabfrage um rauszufindne ob screensession noch aktiv ist. Return: bool @@ -62,10 +67,27 @@ while true then # Server läuft, zeige letzte zeilen vom log an... clear # Aber erstmal sauber machen ^^ tail /papermc/logs/latest.log + read befehl + case $befehl in + backup + screen -r mc -p 0 -X stuff "stop^M" + bash backup.sh + ;; + stop + exec_stop + ;; + restart + screen -r mc -p 0 -X stuff "stop^M" + ;; + restore + screen -r mc -p 0 -X stuff "stop^M" + bash restore.sh + "\n## Please download Plugins and then start the container again. Press any key to continue" + read + ;; + esac trap exec_stop TERM INT # SIGTERM ^C etc abfangen und funktion für gracefull shutdown aufrufen - sleep 10 # CPU Zeit sparen da eine downtime von max 10s + Startzeit des javapplets vertretbar ist kann bei bedarf beliebig erhöht werden. else # Server läuft nicht, abgestürzt, gestoppt über minecraft /stop - screen -dmS mc java -server -Xms${MC_RAM} -Xmx${MC_RAM} ${JAVA_OPTS} -jar ${JAR_NAME} nogui #Startupbefehl inkl. ENVs vom Dockerfile - screen -wipe # sollte der server mal abstürzen oder sont irgednwie ein fehler auftreten wird damit zombiesessions entfernt. + start_server fi done -- GitLab