bash 루프를 조건부로 중지하고 /stop 명령을 게임 서버에 보냅니다.

bash 루프를 조건부로 중지하고 /stop 명령을 게임 서버에 보냅니다.

저는 Minecraft 서버가 충돌하거나 중지될 경우 자동으로 다시 시작하기 위해 루프를 사용하고 있습니다. 이는 충돌이나 예약된 다시 시작에 유용하지만 때로는 서버를 다시 시작하는 대신 서버를 중지하고 싶을 때도 있습니다.

#!/bin/sh
while true
do
java ... args
sleep 5
done

이상적으로는 어떻게든 이 루프가 끝나도록 말할 수 있습니다.그리고/stop두 가지 작업을 동시에 수행할 필요가 없도록 월드 서버에 명령을 전달합니다 .

저는 쉘 스크립팅을 처음 접했기 때문에 올바른 접근 방식이 확실하지 않습니다.

Ubuntu 18.xx(사용 가능한 경우)

답변1

나는 Panki의 의견에 동의합니다. 마인크래프트 서버를 서비스로 실행하는 것이 더 나은 것 같습니다.

기본적으로, "systemd" 디렉토리에 일부 파일을 추가하여 프로세스를 시작하라고 지시할 때 운영 체제가 프로세스를 계속 실행하고, 중지하라고 지시하면 프로세스를 중지할 수 있도록 해야 합니다.

설정하는 데 도움이 되는 많은 튜토리얼이 있습니다. 예를 들어:

상세한:https://linuxconfig.org/how-to-create-systemd-service-unit-in-linux

따라하기 쉬움:https://medium.com/@benmorel/creating-a-linux-service-with-systemd-611b5c8b91d6

Minecraft 관련:https://linuxize.com/post/how-to-install-minecraft-server-on-ubuntu-18-04/#creating-systemd-unit-file

"시작된" 상태를 유지하려면 서비스에 다음 줄을 추가해야 합니다.

Restart=always

또한보십시오:https://serverfault.com/questions/611525/standard-or-best-way-to-keep-alive-process-started-by-init-d

관련 정보