화면에 Minecraft 서버가 실행되고 있는데 지금은 다음과 같이 Java를 시작하는 스크립트일 뿐입니다.
screen -dmS mc java -Xincgc -Xms1024M -jar craftbukkit-1.6.4-b2882.jar
기본적으로 이는 SSH를 통해 액세스할 수 있는 백그라운드의 화면 컨테이너에서 Minecraft를 실행합니다 screen -r mc
. 그러나 내가 원하는 것은 프로세스가 항상 서버 모니터에서 실행되고 ssh를 통해 액세스 가능하도록 하는 것입니다 screen -x mc
. 또한 2시간마다 중지 명령으로 mc 프로세스를 채운 다음 start.sh 스크립트를 실행하는 restart.sh 스크립트가 있습니다. 서버가 런레벨 3에 있으므로 작동하지 않을 것 같습니다 gnome-terminal -e "screen -x mc"
. 또한 다시 시작 스크립트는 mc를 화면에서 시작하는 것 같습니다. SSH를 통해 서버에 연결하면 screen -ls
아무것도 표시되지 않지만 마인크래프트 서버 프로세스가 실행 중이어서 연결할 수 있습니다. 스크립트는 다음과 같습니다.
#!/bin/sh
screen -x mc
screen -s mc stuff "say Server Restarting in 15 minutes."
screen -s mc -X eval "stuff \015"
sleep 600
screen -x mc
screen -x mc -X stuff "say Server restarting in 5 minutes."
screen -s mc -X eval "stuff \015"
sleep 240
screen -x mc
screen -s mc -X stuff "say Server restarting in 1 minute."
screen -s mc -X eval "stuff \015"
sleep 60
screen -S mc -X stuff "say Server restarting."
screen -S mc -X eval "stuff \015"
screen -S -X stuff "kickall Server Restarting, it should be back up in about a minute."
screen -S mc -X eval "stuff \015"
sleep 2
screen -S mc -X stuff "stop"
screen -S mc -X eval "stuff \015"
sleep 30
screen -wipe
sleep 3
cd /minecraft/server/craftbukkit
./start.sh
어떤 아이디어가 있나요?
답변1
이것은 네 부분으로 구성됩니다.
- 암소 비슷한 일종의 영양
screen
- Minecraft를 시작하고 죽으면 다시 시작하는 스크립트(예: 호출
start-minecraft.sh
) start-minecraft.sh
화면 내에서 이 스크립트를 실행하기 위한 시작 스크립트입니다.su
스크린 세션과 마인크래프트 서버 프로세스를 소유한 uid에서 사용하거나 실행해야 합니다sudo
.start-minecraft.sh
이는 /etc/inittab 또는 /etc/rc.local 등에서 실행할 수 있습니다.- 크론 작업은 2시간마다 Minecraft 서버를 종료합니다.
start-minecraft.sh
MC를 다시 시작하는 사이에 짧은 절전 모드를 가질 수 있는 간단한 Minecraft 무한 루프 래퍼여야 합니다. 스크립트의 최소 버전은 다음과 같습니다.
#! /bin/sh
# set PATH and other env variables here, if required
# ...
while true; do
java -Xincgc -Xms1024M -jar craftbukkit-1.6.4-b2882.jar
sleep 30
done
내부적으로 스크립트를 실행하는 screen
방법 중 하나는 다음과 같습니다.
screen -d -RR minecraft -t minecraft /path/to/start-minecraft.sh
존재하는 경우 screen
"minecraft"라는 기존 화면 세션에 연결하도록 지시하고, 존재하지 않는 경우 해당 이름으로 새 세션을 만든 다음 화면 내에 "minecraft"라는 제목의 단일 탭을 만들고 시작을 실행합니다. minecraft.sh 스크립트가 들어있습니다.
사용자가 실행 중인 화면에 ~/.screenrc
파일이 있는 경우 화면의 -c
옵션을 사용하여 프로필이나 사용자 정의 파일을 사용하지 않고 해당 파일을 재정의할 수도 있습니다.screen -c /dev/null ...
그러면 화면을 시작하는 두 번째 방법이 나옵니다. .screenrc
다음 두 줄을 포함하는 Minecraft용 사용자 정의 파일을 만듭니다 .
screen -t bash 1 bash
screen -t minecraft 0 /path/to/start-minecraft.sh
그러면 화면 내에 두 개의 "창"이 생성됩니다. 하나는 bash를 실행하고 다른 하나는 Minecraft를 실행합니다. Minecraft는 창 0에서 마지막으로 시작되므로 연결하면 첫 번째 창이 표시됩니다.
화면을 시작하는 데 사용하는 방법에 관계없이 나중에 이 화면 세션에 수동으로 연결할 수 있습니다(예: 터미널에서 또는 SSH를 통해 연결) screen -d -RR minecraft
.
후자(사용자 정의 ~/.screenrc) 방법이 선호됩니다. 그것이 죽는 경우 (예를 들어 마인크래프트 서버를 일시적으로 오프라인으로 전환하기 위해 종료했기 때문에) start-minecraft.sh
새 "창"을 만들고 start-minecraft.sh를 수동으로 실행하여 screen
다시 시작할 수 있습니다.