Files
scripts/mineserve
2022-12-12 20:47:49 -05:00

67 lines
1.4 KiB
Bash
Executable File

#!/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