Minecraft 서버(aws/linux) 불일치 웹훅 오류

Minecraft 서버(aws/linux) 불일치 웹훅 오류

Linux(CentOS)를 실행하는 EC2 인스턴스(AWS)에서 Minecraft 서버를 실행하고 있습니다. minecraft.service시스템 프로세스를 다음으로 변경했습니다 .

ExecStart=python3 run_server.py

이 Python 스크립트는 run.json서버 jar 이름, 웹훅 URL, 역할 ID 및 jvm 매개변수로 채워진 파일을 추출합니다. 다음과 같습니다.

{
  "server_jar":"server.jar",
  "jvm_args":"-Xms1G -Xmx4G",
  "webhook_url":"your_url_here",
  "role_id":"your_role_here"
}

sudo systemctl start minecraft이후에 실행 하면 sudo systemctl status minecraft다음 오류가 발생합니다.

with Popen(*popenargs, **kwargs) as p:  
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "/usr/local/lib/python3.12/subprocess.py", line 1026, in __init__
 self._execute_child(args, executable, preexec_fn, close_fds,  
File "/usr/local/lib/python3.12/subprocess.py", line 1953, in _execute_child
 raise child_exception_type(errno_num, err_msg, err_filename)  
FileNotFoundError: [Errno 2] No such file or directory: 'java -Xmx3G -Xms3G -jar server.jar nogui'

답변1

더 많은 Python 코드를 보는 데 도움이 되지만 공백이 포함된 큰 문자열을 단일 명령 이름으로 실행하려고 하기 때문에 이 오류가 발생하는 것 같습니다. 대신 목록을 전달해야 합니다.

실수:

from subprocess import Popen, PIPE

process = Popen('java -Xmx3G -Xms3G -jar server.jar nogui', stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()

옳은:

from subprocess import Popen, PIPE

process = Popen(
    ['java', '-Xmx3G', '-Xms3G', '-jar', 'server.jar', 'nogui'],
    stdout=PIPE, stderr=PIPE
)
stdout, stderr = process.communicate()

긴 문자열을 여러 하위 부분으로 분할하고 이를 목록으로 전달하는 방법을 확인하세요.

이 답변이 더 도움이 될 수 있습니다.https://stackoverflow.com/questions/12605498/how-to-use-subprocess-popen-python

관련 정보