새 화면 세션을 만들고 명령을 실행하지만 화면은 그대로 두려면 어떻게 해야 합니까?

새 화면 세션을 만들고 명령을 실행하지만 화면은 그대로 두려면 어떻게 해야 합니까?

안녕하세요 여러분, 저는 Minecraft 서버를 서버와 함께 시작하려고 합니다. 적절한 명령이 무엇인지 파악한 후에 cron을 사용하겠습니다. "Minecraft"라는 새 화면에서 Minecraft를 시작하고 서버를 시작하는 명령을 이 세션으로 보내길 원합니다. 매일 아침 3시에 "stop" 명령을 보내 Minecraft 서버를 중지한 다음 서버를 시작하라는 명령을 보내고 싶습니다(Minecraft가 가끔씩 다시 시작되지 않으면 버그가 발생합니다). 화면 옵션을 가지고 놀다가 몇 초 동안 Minecraft를 시작했는데 화면이 종료되었습니다. 온라인에서 읽은 내용에 따르면 이 명령이 작동합니다.

screen -dmS Minecraft java -Xmx12G -Xms12G -jar /home/alan/minecraft/forge-1.16.5-36.2.30.jar --nogui

변경 사항을 적용했기 때문에 이 세션에 다시 연결하여 명령을 입력하거나 Minecraft 서버를 다시 시작하고 싶습니다. 실행한 모든 명령이 작동하지 않았습니다. "screen -ls"를 입력했는데 "Minecraft" 세션이 없습니다. 나는 cron을 사용하는 방법을 알고 있지만 화면을 분명히 이해하지 못합니다. 우리 지역에서는 정전이 자주 발생하므로 UPS가 서버를 종료하고 전원이 복구되면 Raspberry PI가 서버를 다시 켭니다. 내 스타트업에 Minecraft를 포함시키는 것이 좋을 것 같습니다. 그 후에는 내 모든 서비스가 내 개입 없이 자동으로 시작되고 중지됩니다.

답변1

화면에 이름을 지정했기 Minecraft때문에

# Tell Minecraft to gracefully stop.
# Ending Minecraft will terminate Java
# systemd will kill Screen after the 10-second delay. No explicit kill for Screen needed
screen -p 0 -S Minecraft -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\\015'
screen -p 0 -S Minecraft -X eval 'stuff "save-all"\\015'
screen -p 0 -S Minecraft -X eval 'stuff "stop"\\015'
sleep 10

명령을 systemd 서비스로 래핑하는 것은 쉽습니다. 또한 부팅 시 자동 시작, 상태 모니터링, systemctl을 사용한 손쉬운 시작/중지/재시작 제어 기능도 제공합니다.

모든 출력이 기록되고 모든 서버 명령은 관리 콘솔을 통해 입력할 수 있으므로 일반적으로 화면을 열어 두는 데 신경 쓸 필요가 없습니다.

나는 몇 년 전에 전체 과정에 대한 전체 블로그 게시물을 썼습니다.http://cheesehead-techblog.blogspot.com/2019/08/toggling-minecraft-server-using-systemd.html

관련 정보