From df232372dfaa96baf2b42a142aed0c44effa1324 Mon Sep 17 00:00:00 2001 From: Leonid Pershin Date: Sat, 9 May 2026 15:19:47 +0300 Subject: [PATCH] Refactor install-service.sh to regenerate user_jvm_args.txt from JAVA_ARGS in variables.txt, enhancing JVM configuration management. Added logging for user_jvm_args updates and improved command output for monitoring server status. --- Server/install-service.sh | 42 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/Server/install-service.sh b/Server/install-service.sh index 252929f..be35a52 100644 --- a/Server/install-service.sh +++ b/Server/install-service.sh @@ -191,14 +191,44 @@ set -euo pipefail cd "\$(cd "\$(dirname "\$0")" && pwd)" +SERVICE_UNIT_NAME="${SERVICE_NAME}" +GAME_ARGS_REL="${NEOFORGE_ARGS_REL}" +# Префикс для journalctl | grep -F '[mc-launch]' +_MC_LP='[mc-launch]' + if [[ -s "./variables.txt" ]]; then # shellcheck disable=SC1091 source "./variables.txt" fi -GAME_ARGS_REL="${NEOFORGE_ARGS_REL}" -# Префикс для journalctl | grep, например: journalctl -u minecraft -b | grep '[mc-launch]' -_MC_LP='[mc-launch]' +# Перегенерация user_jvm_args.txt из JAVA_ARGS (как при запуске через start.sh / start.ps1). +# Править JVM: только variables.txt → JAVA_ARGS. user_jvm_args.txt не редактировать вручную. +_regen_user_jvm_args() { + if [[ ! -s "./variables.txt" ]]; then + echo "\${_MC_LP} WARNING: variables.txt отсутствует — user_jvm_args.txt не обновлён." >&2 + return 0 + fi + local jargs="\${JAVA_ARGS:-}" + jargs="\${jargs%\$'\r'}" + if [[ -z "\${jargs// /}" ]]; then + echo "\${_MC_LP} WARNING: JAVA_ARGS пуст в variables.txt — user_jvm_args.txt не перезаписан." >&2 + return 0 + fi + cat > user_jvm_args.txt <<'JVMBLOCK' +# Xmx and Xms set the maximum and minimum RAM usage, respectively. +# They can take any number, followed by an M or a G. +# M means Megabyte, G means Gigabyte. +# For example, to set the maximum to 3GB: -Xmx3G +# To set the minimum to 2.5GB: -Xms2500M +# A good default for a modded server is 4GB. +# Uncomment the next line to set it. +# -Xmx4G +JVMBLOCK + printf '%s\n' "\${jargs}" >> user_jvm_args.txt + echo "\${_MC_LP} user_jvm_args.txt обновлён из variables.txt (JAVA_ARGS)." +} + +_regen_user_jvm_args echo "\${_MC_LP} ========== Minecraft server (systemd / run-service.sh) ==========" _JAVA_CMD="\${JAVA:-java}" @@ -217,6 +247,10 @@ fi echo "\${_MC_LP} Game/program args file: @\${GAME_ARGS_REL}" echo "\${_MC_LP} Trailing args: \$*" echo "\${_MC_LP} Java invocation pattern: \$_JAVA_CMD \${ADDITIONAL_ARGS:-} @user_jvm_args.txt @\${GAME_ARGS_REL} \$*" +echo "\${_MC_LP} Логи — только блок запуска (grep):" +echo "\${_MC_LP} sudo journalctl -u \${SERVICE_UNIT_NAME} -b --no-pager | grep -F '[mc-launch]'" +echo "\${_MC_LP} Живой поток:" +echo "\${_MC_LP} sudo journalctl -u \${SERVICE_UNIT_NAME} -f | grep --line-buffered -F '[mc-launch]'" echo "\${_MC_LP} ==============================================================" # shellcheck disable=SC2086 @@ -294,4 +328,6 @@ echo " sudo systemctl status ${SERVICE_NAME}" echo " sudo systemctl stop ${SERVICE_NAME}" echo " sudo systemctl restart ${SERVICE_NAME}" echo " sudo journalctl -u ${SERVICE_NAME} -f # живые логи" +echo " sudo journalctl -u ${SERVICE_NAME} -b --no-pager | grep -F '[mc-launch]' # JVM/запуск" +echo " sudo journalctl -u ${SERVICE_NAME} -f | grep --line-buffered -F '[mc-launch]' # поток" echo " sudo $0 --uninstall # удалить сервис"