이것은 작동하지 않습니다. 왜 이런 일이 발생합니까? [폐쇄]

이것은 작동하지 않습니다. 왜 이런 일이 발생합니까? [폐쇄]
study071126@minecraft:~$ cd ~/minecraft/ && sh ./run.sh nogui
Error occurred during initialization of VM
Too small maximum heap
study071126@minecraft:~/minecraft$ ls
config          forge-1.20.1-47.2.0-installer.jar      logs     run.sh
defaultconfigs  forge-1.20.1-47.2.0-installer.jar.log  mods     user_jvm_args.txt
eula.txt        libraries                              run.bat
study071126@minecraft:~/minecraft$ java -Xms10G -Xmx14G -jar ^C
study071126@minecraft:~/minecraft$ java -Xms10G -Xmx14G -jar forge-1.20.1-47.2.0-installer.jar --nogui
JVM info: Private Build - 18.0.2-ea - 18.0.2-ea+9-Ubuntu-222.04
java.net.preferIPv4Stack=true
Current Time: 07/02/2024 01:44:54
Exception in thread "main"
joptsimple.UnrecognizedOptionException: nogui is not a recognized option
        at joptsimple.OptionException.unrecognizedOption(OptionException.java:108)
        at joptsimple.OptionParser.handleLongOptionToken(OptionParser.java:510)
        at joptsimple.OptionParserState$2.handleArgument(OptionParserState.java:56)
        at joptsimple.OptionParser.parse(OptionParser.java:396)
        at net.minecraftforge.installer.SimpleInstaller.main(SimpleInstaller.java:93)
study071126@minecraft:~/minecraft$ ^C
study071126@minecraft:~/minecraft$ cd ~/minecraft/ && sh ./run.sh nogui
Error occurred during initialization of VM
Too small maximum heap
study071126@minecraft:~/minecraft$ ^C
study071126@minecraft:~/minecraft$ ^C
study071126@minecraft:~/minecraft$ sudo java -Xmx9218m -Xms2048m -jar forge-1.20.1-47.2.0-installer.jar --noguiJVM info: Private Build - 18.0.2-ea - 18.0.2-ea+9-Ubuntu-222.04
java.net.preferIPv4Stack=true
Current Time: 07/02/2024 01:47:35
Exception in thread "main"
joptsimple.UnrecognizedOptionException: nogui is not a recognized option
        at joptsimple.OptionException.unrecognizedOption(OptionException.java:108)
        at joptsimple.OptionParser.handleLongOptionToken(OptionParser.java:510)
        at joptsimple.OptionParserState$2.handleArgument(OptionParserState.java:56)
        at joptsimple.OptionParser.parse(OptionParser.java:396)
        at net.minecraftforge.installer.SimpleInstaller.main(SimpleInstaller.java:93)
study071126@minecraft:~/minecraft$ ^C
study071126@minecraft:~/minecraft$ cd ~/minecraft/ && sh ./run.sh nogui
Error occurred during initialization of VM
Too small maximum heap
study071126@minecraft:~/minecraft$ cd ~/minecraft/ && sh ./run.sh nogui
Error occurred during initialization of VM
Too small maximum heap
study071126@minecraft:~/minecraft$ sudo java -Xmx2048m -Xms9218m -jar forge-1.20.1-47.2.0-installer.jar --noguiError occurred during initialization of VM
Initial heap size set to a larger value than the maximum heap size
study071126@minecraft:~/minecraft$ sudo java -Xmx2048m -Xms9218m -jar forge-1.20.1-47.2.0-installer.jar --noguiError occurred during initialization of VM
Initial heap size set to a larger value than the maximum heap size
study071126@minecraft:~/minecraft$ sudo java -Xmx2048m -Xms2048m -jar -jar forge-1.20.1-47.2.0-installer.jar --nogui
JVM info: Private Build - 18.0.2-ea - 18.0.2-ea+9-Ubuntu-222.04
java.net.preferIPv4Stack=true
Current Time: 07/02/2024 01:48:42
Exception in thread "main"
joptsimple.UnrecognizedOptionException: nogui is not a recognized option
        at joptsimple.OptionException.unrecognizedOption(OptionException.java:108)
        at joptsimple.OptionParser.handleLongOptionToken(OptionParser.java:510)
        at joptsimple.OptionParserState$2.handleArgument(OptionParserState.java:56)
        at joptsimple.OptionParser.parse(OptionParser.java:396)
        at net.minecraftforge.installer.SimpleInstaller.main(SimpleInstaller.java:93)
study071126@minecraft:~/minecraft$ cd ~/minecraft/ && sh ./run.sh nogui                                        Error occurred during initialization of VM
study071126@minecraft:~/minecraft$ ^C
study071126@minecraft:~/minecraft$ sh ./run.sh
Error occurred during initialization of VM
Too small maximum heap
study071126@minecraft:~/minecraft$ 

답변1

왜냐하면 당신이 제대로 하고 있지 않기 때문입니다.

좀 더 구체적인 답변을 원하시면 "it"과 "work"를 올바르게 정의하세요.

좀 더 구체적으로(추론적으로는) 수정된 Minecraft 서버를 시작하려고 하는 것으로 보입니다. 이 모드의 설치 및 시작 지침을 참조하세요. 또한 받은 오류 메시지도 확인하세요. 사용 중인 스크립트를 확인하여 프로젝트 문서에 지정된 명령을 실행하고 있는지 확인하세요.

얻는 결과 중 일부와 그 의미는 문제가 있는 응용 프로그램의 사양에 따라 달라집니다.

Error occurred during initialization of VM
Too small maximum heap

실행 중인 애플리케이션은 이를 호출하는 JVM이 허용하는 것보다 더 많은 메모리 할당을 요청합니다.

Exception in thread "main"
joptsimple.UnrecognizedOptionException: nogui is not a recognized option

nogui애플리케이션에서 인식되지 않는 런타임 옵션( )을 제공했습니다. 해당 애플리케이션의 설명서를 참조하세요.

(추가) 제쳐두고: 만약에누구나실행하라고 하더군요게임 서버sudo, 로 시작하는 명령멈추다그 사람의 지시는 가난하고 정확하지 않을 수 있으며 온갖 위험이 도사리고 있으므로 따르십시오.

답변2

forge-1.20.1-47.2.0-installer.jar이는 실제 Minecraft 서버가 아니라는 점에 유의하세요 .설치 프로그램그것을 위해. 이미 한 번 수행한 것이므로 다시 실행할 필요가 없는 것 같습니다.

텍스트 파일 이라는 파일이 있습니다 user_jvm_args.txt. (예를 들어 를 사용하여) 살펴보면 less ~/minecraft/user_jvm_args.txt다음과 같은 내용을 볼 수 있습니다.

# 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

여기에 Java 메모리 매개변수를 추가할 수 있습니다. 마지막 줄의 기호를 제거 #하고 거기에 옵션을 추가하거나, 끝에 새 줄을 추가하고 메모리 옵션을 포함할 수 있습니다.

echo "-Xms10G -Xmx14G" >> ~/minecraft/user_jvm_args.txt

(이 명령줄은 한 번만 실행해야 합니다. 이후에 옵션을 변경하려면 일반 텍스트 편집기를 사용하여 파일에 줄을 더 많이 추가하지 않도록 해야 합니다.)

그 후에 cd ~/minecraft/ && sh ./run.sh nogui는 작동합니다.

이것은 run.sh쉘 스크립트이므로 텍스트 파일이기도 합니다. 일반적으로 프로그램을 시작하기 위한 스크립트가 함께 제공되는 경우 이는 해당 스크립트가 매개변수 및 기타 사용자 정의를 위한 예상 위치라는 것을 의미하므로 실행하기 전에 스크립트를 읽어 보는 것이 좋습니다. less ~/minecraft/run.sh내용을 보는 방법이 될 것입니다.

이 경우 다음과 같은 내용이 표시됩니다.

#!/usr/bin/env sh
# Forge requires a configured set of both JVM and program arguments.
# Add custom JVM arguments to the user_jvm_args.txt
# Add custom program arguments {such as nogui} to this file in the next line before the "$@" or
#  pass them to this script directly
java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.20.2-48.1.0/unix_args.txt "$@"

네가 원한다면언제나nogui수행할 작업을 알려주는 매개변수를 사용하여 서버를 실행합니다 . nogui마지막 줄에 추가하면 다음과 같습니다.

java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.20.2-48.1.0/unix_args.txt nogui "$@"

그 후에는 이 모드 cd ~/minecraft/ && sh ./run.sh에서 서버를 시작하는 것으로 충분합니다 .nogui

DopeGhoti가 답변에서 말했듯이안 돼요게임 서버를 실행하는데 사용합니다 sudo. 게임 서버는 복잡하고 아직 널리 알려지지 않은 취약점을 포함하고 있는 것이 거의 확실하며, 루트 권한으로 게임 서버를 실행하는 경우 이러한 취약점을 악용하는 사람은 누구나 즉시 시스템을 완전히 제어할 수 있습니다.

일반 사용자가 해킹당할 만큼 나쁜 일이지만(요즘에는 청구서를 지불하는 동안 클라우드 서버를 사용하여 침입자를 위해 비트코인을 채굴하는 경우가 많습니다), 침입자에게 쉽게 루트를 얻을 수 있는 능력을 제공합니다. 액세스는 훨씬 더 나쁩니다. 이를 복구할 수 있는 신뢰할 수 있는 유일한 방법은 클라우드 서버를 삭제하고 새 서버를 만드는 것입니다.

(저는 cd의도적으로 이 답변에서 절대 경로와 외부 명령을 사용했습니다. 질문자는 명령줄 기술과 별도의 셸 세션 및 디렉터리 트리 탐색의 개념조차 여전히 약간 불확실할 수 있는 초보자라고 가정합니다.)

관련 정보