#출처 http://www.minecraftwiki.net/wiki/Server_startup_script #세팅 #SERVICE 는 실행시킬 서버파일의 이름을 입력하시면 됩니다. #버킷의 경우에는 craftbukkit-0.0.1-SNAPSHOT.jar 가 되겠네요. SERVICE='minecraft_server.jar'
#그래픽창이 안뜨게 하는겁니다. 기본값으로 놔두세요. OPTIONS='nogui'
#당신의 리눅스 계정 이름을 입력하시면 됩니다. #되도록 root 는 사용하지 않으셨으면 좋겠네요. USERNAME='minecraft'
#백업할 맵의 이름입니다. WORLD='world'
#마인크래프트가 설치된 폴더의 경로입니다. # /home/계정이름/서버파일이 설치된 폴더 MCPATH='/home/minecraft/minecraft'
# 백업된 맵이 저장될 폴더를 지정하시면 됩니다. # 저의 경우에는 /home/계정/backups 라는 폴더를 새로 생성해서 지정했습니다. BACKUPPATH='/media/remote.share/minecraft.backup'
# 마인크래프트를 실행시키는 함수입니다. echo 에 자신이 원하는 적당한 메세지를 입력하시면 됩니다. # 자신의 서버가 설치된 컴퓨터에서만 보이는 메세지 이기 때문에 맘대로 적으셔도 됩니다. # 예> echo "$SERVICE 서버가 시작하고 있습니다." # 약간의 프로그래밍 지식이 있으시다면 수정해도 무방하지만 # 잘 모르신다면 걍 건들지 않는게 좋습니다. mc_start() { if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null then echo "$SERVICE is already running!" else echo "Starting $SERVICE..." cd $MCPATH bash -c "cd $MCPATH && screen -dmS minecraft $INVOCATION" sleep 7 if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null then echo "$SERVICE is now running." else echo "Error! Could not start $SERVICE!" fi fi }
# 백업을 할때 현재 상태의 맵을 강제로 저장하는 역할을 합니다. mc_saveoff() { if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null then echo "$SERVICE is running... suspending saves" bash -c "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'" bash -c "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'" bash -c "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'" sync sleep 10 else echo "$SERVICE is not running. Not suspending saves." fi }
# 백업이 끝난뒤 다시 동작하도록 하는 함수 mc_saveon() { if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null then echo "$SERVICE is running... re-enabling saves" bash -c "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'" bash -c "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'" else echo "$SERVICE is not running. Not resuming saves." fi }
# 마인크래프트를 종료할때 사용하는 함수입니다. mc_stop() { if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null then echo "Stopping $SERVICE" bash -c "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'" bash -c "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'" sleep 10 bash -c "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'" sleep 7 else echo "$SERVICE was not running." fi if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null then echo "Error! $SERVICE could not be stopped." else echo "$SERVICE is stopped." fi }
# 마인크래프트를 백업하는 함수입니다. mc_backup() { echo "Backing up minecraft world..." if [ -d $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"` ] then for i in 1 2 3 4 5 6 do if [ -d $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`-$i ] then continue else bash -c "cd $MCPATH && cp -r $WORLD $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`-$i" break fi done else bash -c "cd $MCPATH && cp -r $WORLD $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`" echo "Backed up world" fi echo "Backup complete" }
# 서버콘솔창에 명령어를 직접 입력할때 사용하는 함수입니다. mc_command() { if [ "$1" ] then command="$1"; if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null then echo "$SERVICE is running... executing command" bash -c "screen -p 0 -S minecraft -X eval 'stuff \"$command\"\015'" fi else echo "Must specify server command" fi }
#Start-Stop here # 명령어를 분석해서 실제 함수들을 호출하는 코드들입니다. case "$1" in start) mc_start ;; stop) mc_stop ;; restart) mc_stop mc_start ;; backup) mc_saveoff mc_backup mc_saveon ;; status) if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null then echo "$SERVICE is running." else echo "$SERVICE is not running." fi ;; command) mc_command "$2" ;;
1. 자신의 계정에 minecraft.sh 라는 파일을 새로 생성시켜서 (예 : /home/계정이름/minecraft.sh)
위에 적절하게 세팅한 내용을 붙여넣습니다.
2. 그리고 minecraft.sh 가 저장되어있는 폴더에서
chmod -R 755 minecraft.sh
를 입력해줘서 실행가능한 파일로 권한을 변경해줍니다.
3. crontab -e 를 이용해서
참고> m forminute between 0 and 59 h for hour between 0 and 11 dom for day of month between 1 and 31 mon for month between 1 and 12 dow for day of week between 0 and 7, sunday is represented by 0 or 7,
적절하게 아래와 같은 규칙으로 설정해줍니다. #m h dom mon dow * * * * * * /home/계정이름/minecraft start &>/dev/null * * * * * * /home/계정이름/minecraft restart &>/dev/null * * * * * * /home/계정이름/minecraft backup &>/dev/null
예를들어 2시간마다 재시작을 하게 하고 싶다. * */2 * * * * /home/계정이름/minecraft restart &>/dev/null
예를들어 5분마다 서버가 꺼져있으면 다시 시작하게 하고 싶다. */5 * * * * * /home/계정이름/minecraft start &>/dev/null
새벽 1시면 서버가 종료되게 하고 싶다. 0 1 * * * * /home/계정이름/minecraft restart &>/dev/null