Paste #45456: start.sh

Date: 2017/11/11 10:23:49 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


#! /bin/bash 

SERVER="Spigot.jar" 
SCREENAME="lobby" 
USER="minecraft" 
HEAP_MAX="4096" 
HEAP_MIN"'2048" 
HISTORY="32" 
HOME="/home/minecraft/mc/servers/${SCREENAME}" 
INVOCATION="java -Xmx${HEAP_MAX}M -Xms${HEAP_MIN}M -jar ${SERVER}" 
ME=$(whoami)

as_user() { 
  if [ ${ME} == ${USER} ] ; then 
    bash -c "$1" 
  else 
    su - ${USER} -c "$1" 
  fi 
} 

cmd() { 
  command="$1"; 
  logfile="${HOME}/proxy.log.0" 
  if server_running 
  then 
    pre_log_len=$(wc -l "${HOME}/proxy.log.0" | awk '{print $1}')
    as_user "screen -p 0 -S ${SCREENAME} -X eval 'stuff "${command}"\015'" 
    sleep .2 
    V=$(wc -l ${logfile} | awk '{print $1}')-${pre_log_len}
    tail -n $((V)) ${logfile} 
  else 
    echo "${SERVER} was not running. Not able to run command." 
  fi 
} 

server_running() { 
  if ps ax | grep SCREEN | grep ${SCREENAME} | grep ${SERVER} > /dev/null 
  then 
    return 0 
  else 
    return 1 
  fi 
} 

start() { 
  if server_running 
  then 
    echo "${SCREENAME} is already running!" 
  else 
    as_user "cd ${HOME} && screen -h ${HISTORY} -dmS ${SCREENAME} ${INVOCATION}" 
    if server_running 
    then 
      echo "${SCREENAME} is now running." 
    else 
      echo "Error! Could not start ${SCREENAME}!" 
    fi 
  fi 
} 

stop() { 
  if server_running 
  then 
    echo "Stopping ${SCREENAME}" 
    cmd end 
  else 
    echo "${SCREENAME} was not running." 
  fi 
} 

case "$1" in 
  start) 
    start 
    ;; 
  stop) 
    stop 
    ;; 
  restart) 
    stop 
    sleep 5 
    start 
    ;; 
  status) 
    if server_running 
    then 
      echo "${SCREENAME} is running." 
    else 
      echo "${SCREENAME} is not running." 
    fi 
    ;; 

  *) 
  echo "Usage: $0 {start|stop|status|restart}" 
  exit 1 
  ;; 
esac 

exit 0