#!/bin/bash PID=/opt/minecraft/mc.pid status() { screen -S minecraft -X stuff "list " echo echo "== Status ==" ps -p $(cat $PID) -o %cpu,%mem,cmd echo LAST_STATUS=$(cat logs/latest.log | grep -n "players online:" | tail -n1 | cut -d ":" -f 1) tail -n +$LAST_STATUS logs/latest.log echo } start() { if test -f "$PID"; then echo "Server already running with pid: $(cat $PID)" status exit 0 fi screen -S minecraft -dm java -Xms1G -Xmx5G -jar server.jar nogui pgrep -P "$(screen -list | sed -E -n 's/\s*([0-9]+).minecraft.*/\1/p')" > $PID } stop() { if test -f "$PID"; then SCREEN_PID=$(screen -list | sed -E -n 's/\s*([0-9]+).minecraft.*/\1/p') screen -S minecraft -X stuff "stop " echo -n "Waiting for shutdown..." # kill -0 checks if a process is running while kill -0 $SCREEN_PID 2> /dev/null; do sleep 3 echo -n "." done echo " Shutdown Complete!" rm $PID exit 0 fi echo "No server is running..." } case "$1" in 'start') start ;; 'stop') stop ;; 'restart') stop start ;; 'status') status ;; *) echo echo "Usage: $0 { start | stop | restart | status }" echo exit 1 ;; esac exit 0