67 lines
1.4 KiB
Bash
Executable File
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 /opt/minecraft/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
|
|
|