스크립트에서 터미널의 화면 프로세스 열기

스크립트에서 터미널의 화면 프로세스 열기

화면에 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

이것은 네 부분으로 구성됩니다.

  1. 암소 비슷한 일종의 영양screen
  2. Minecraft를 시작하고 죽으면 다시 시작하는 스크립트(예: 호출 start-minecraft.sh)
  3. start-minecraft.sh화면 내에서 이 스크립트를 실행하기 위한 시작 스크립트입니다. su스크린 세션과 마인크래프트 서버 프로세스를 소유한 uid에서 사용하거나 실행해야 합니다 sudo. start-minecraft.sh이는 /etc/inittab 또는 /etc/rc.local 등에서 실행할 수 있습니다.
  4. 크론 작업은 2시간마다 Minecraft 서버를 종료합니다.

start-minecraft.shMC를 다시 시작하는 사이에 짧은 절전 모드를 가질 수 있는 간단한 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다시 시작할 수 있습니다.

관련 정보