Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #/etc/init.d/empy_infinity
- #version 0.1 2015-4-1 (YYYY-MM-DD)
- ### BEGIN INIT INFO
- # Provides: Infinity Minecraft Service
- # Required-Start: $local_fs $remote_fs screen-cleanup
- # Required-Stop: $local_fs $remote_fs
- # Should-Start: $network
- # Should-Stop: $network
- # X-Interactive: true
- # Default-Start: 2 3 4 5
- # Default-Stop: 0 1 6
- # Short-Description: Infinity Minecraft server control service
- ### END INIT INFO
- #Settings
- SERVERTYPE='Infinity'
- SCREENNAME='infinity'
- SERVICE='FTBServer-1.7.10-1291.jar'
- OPTIONS='nogui'
- USERNAME='root'
- MCPATH='/home/minecraft/server/infinity'
- WORLDPATH='/home/minecraft/server/infinity/world_server/'
- declare -a DIM_MONTH_CLEANER=("DIM-1" "DIM1" "DIM-100" "DIM_MYST3" "DIM-34")
- declare -a DIM_RESTART_CLEANER=("DIM4" "DIM5" "DIM6" "DIM7" "DIM8" "DIM10" "DIM_MYST9" "DIM_MYST11" "DIM_MYST12" "DIM34")
- MAXHEAP=8
- MINHEAP=2
- HISTORY=5000
- SCROLLBACK=5000
- INVOCATION="java -server -Xmx${MAXHEAP}G -Xms${MINHEAP}G -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:+CMSClassUnloadingEnabled -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:+UseLargePages -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:+OptimizeStringConcat -XX:+UseBiasedLocking -Xincgc -XX:MaxGCPauseMillis=10 -XX:SoftRefLRUPolicyMSPerMB=10000 -XX:+CMSParallelRemarkEnabled -XX:ParallelGCThreads=10 -Djava.net.preferIPv4Stack=true -jar $SERVICE $OPTIONS"
- mc_start() {
- if pgrep -u $USERNAME -f $SERVICE > /dev/null
- then
- echo "`date`: $SERVERTYPE is already running!"
- else
- echo "`date`: Starting $SERVERTYPE..."
- cd $MCPATH
- cd $MCPATH && screen -h $HISTORY -dmS $SCREENNAME $INVOCATION $OPTIONS
- sleep 10
- echo "`date`: Server $SERVERTYPE still starting..."
- sleep 10
- if pgrep -u $USERNAME -f $SERVICE > /dev/null
- then
- echo "`date`: $SERVERTYPE is now running."
- else
- echo "`date`: Error! Could not start $SERVERTYPE!"
- fi
- fi
- }
- mc_stop_now() {
- if pgrep -u $USERNAME -f $SERVICE > /dev/null
- then
- echo "`date`: Crash Stopping $SERVERTYPE..."
- screen -S $SCREENNAME -X stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map..."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 10
- screen -S $SCREENNAME -X stuff "save-all"
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "stop"
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 10
- else
- echo "`date`: $SERVERTYPE was not running."
- fi
- if pgrep -u $USERNAME -f $SERVICE > /dev/null
- then
- echo "`date`: Error! $SERVERTYPE could not be stopped."
- else
- echo "`date`: $SERVERTYPE is stopped."
- fi
- }
- mc_stop_restart() {
- if pgrep -u $USERNAME -f $SERVICE > /dev/null
- then
- echo "`date`: Stopping $SERVERTYPE..."
- screen -S $SCREENNAME -X stuff "say Server restarting in 20 minute."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 300
- screen -S $SCREENNAME -X stuff "say Server restarting in 15 minute."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 300
- screen -S $SCREENNAME -X stuff "say Server restarting in 10 minute."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 300
- screen -S $SCREENNAME -X stuff "say Server restarting in 5 minute."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 240
- screen -S $SCREENNAME -X stuff "say Server restarting in 1 minute."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 30
- screen -S $SCREENNAME -X stuff "say Server restarting in 30 seconds."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 15
- screen -S $SCREENNAME -X stuff "say Server restarting in 15 seconds."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 5
- screen -S $SCREENNAME -X stuff "say Server restarting in 10 seconds."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 5
- screen -S $SCREENNAME -X stuff "say Server restarting in 5 seconds."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "say Server restarting in 4 seconds."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "say Server restarting in 3 seconds."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "say Server restarting in 2 seconds."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "say Server restarting in 1 second."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "say Server is restarting please come back in 2 minutes"
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "save-all"
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "stop"
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 15
- else
- echo "`date`: $SERVERTYPE was not running."
- fi
- if pgrep -u $USERNAME -f $SERVICE > /dev/null
- then
- echo "`date`: Error! $SERVERTYPE could not be stopped."
- else
- echo "`date`: $SERVERTYPE is stopped."
- fi
- }
- mc_stop_shutdown() {
- if pgrep -u $USERNAME -f $SERVICE > /dev/null
- then
- echo "`date`: Stopping $SERVERTYPE"
- screen -S $SCREENNAME -X stuff "say Server restarting in 20 minute, With, Dedi restart, up to 20 minutes of downtime."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 300
- screen -S $SCREENNAME -X stuff "say Server restarting in 15 minute, With, Dedi restart, up to 20 minutes of downtime."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 300
- screen -S $SCREENNAME -X stuff "say Server restarting in 10 minute, With, Dedi restart, up to 20 minutes of downtime."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 300
- screen -S $SCREENNAME -X stuff "say Server restarting in 5 minute, With, Dedi restart, up to 20 minutes of downtime."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 240
- screen -S $SCREENNAME -X stuff "say Server restarting in 1 minute, With, Dedi restart, up to 20 minutes of downtime."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 30
- screen -S $SCREENNAME -X stuff "say Server restarting in 30 seconds, With, Dedi restart, up to 20 minutes of downtime."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 15
- screen -S $SCREENNAME -X stuff "say Server restarting in 15 seconds, With, Dedi restart, up to 20 minutes of downtime."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 5
- screen -S $SCREENNAME -X stuff "say Server restarting in 10 seconds, With, Dedi restart, up to 20 minutes of downtime."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 5
- screen -S $SCREENNAME -X stuff "say Server restarting in 5 seconds, With, Dedi restart, up to 20 minutes of downtime."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "say Server restarting in 4 seconds, With, Dedi restart, up to 20 minuts of downtime."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "say Server restarting in 3 seconds."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "say Server restarting in 2 seconds."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "say Server restarting in 1 second."
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "say Server is restarting please come back in 20 minutes"
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "save-all"
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 1
- screen -S $SCREENNAME -X stuff "stop"
- screen -S $SCREENNAME -X eval "stuff \015"
- sleep 15
- else
- echo "`date`: $SERVERTYPE was not running."
- fi
- if pgrep -u $USERNAME -f $SERVICE > /dev/null
- then
- echo "`date`: Error! $SERVERTYPE could not be stopped."
- else
- echo "`date`: $SERVERTYPE is stopped."
- fi
- }
- mc_monthly_cleanup() {
- if pgrep -u $USERNAME -f $SERVICE > /dev/null
- then
- echo "`date`: $SERVERTYPE is already running can not start monthly cleaning!"
- else
- echo "`date`: Starting monthly cleanup $SERVERTYPE..."
- for dim_curr in "${DIM_MONTHLY_CLEANER[@]}"
- do
- lcpath="$WORLDPATH$dim_curr"
- rm -rf $lcpath
- done
- echo "`date`: Monthly cleaning complete for $SERVERTYPE."
- fi
- }
- mc_restart_cleanup() {
- if pgrep -u $USERNAME -f $SERVICE > /dev/null
- then
- echo "`date`: $SERVERTYPE is already running can not start restart cleaning!"
- else
- echo "`date`: Starting restart cleanup $SERVERTYPE..."
- for dim_curr in "${DIM_RESTART_CLEANER[@]}"
- do
- lcpath="$WORLDPATH$dim_curr"
- rm -rf $lcpath
- done
- echo "`date`: Restart cleanup done for $SERVERTYPE."
- fi
- }
- #Start-Stop here
- case "$1" in
- start)
- mc_restart_cleanup
- sleep 2
- mc_start
- ;;
- stop_delay)
- mc_stop_restart
- echo "`date`: dedi stop ready..."
- ;;
- restart)
- mc_stop_restart
- sleep 2
- mc_restart_cleanup
- sleep 2
- mc_start
- ;;
- status)
- if pgrep -u $USERNAME -f $SERVICE > /dev/null
- then
- echo "`date`: $SERVERTYPE is running."
- else
- echo "`date`: $SERVERTYPE is not running."
- fi
- ;;
- stop)
- mc_stop_now
- ;;
- dedi_restart)
- mc_stop_shutdown
- ;;
- monthly_cleanup)
- mc_monthly_cleanup
- ;;
- *)
- echo "Usage: $0 {start|stop|stop_delay|status|restart|dedi_restart|monthly_cleanup}"
- exit 1
- ;;
- esac
- exit 0
Add Comment
Please, Sign In to add comment