Minecraft 服務端啓動腳本
就幾行代碼,懶得傳 git 了,直接貼上了
先這樣,後續再優化
config 需要根據需要自行配置
腳本需在和 jar 包同級目錄運行
#!/bin/bash
# config
JARNAME=forge-1.14.4-28.2.0.jar
XMS="512m"
XMX="2048m"
# option
OPT=$1
if [ $# == 0 ]; then
echo "usage:"
echo " $0 [option]"
$0 --help
exit
fi
# --help
if [ $OPT == -h ] || [ $OPT == --help ]; then
echo ""
echo " -h --help help"
echo " -r --run run Minecraft server, will reboot it if server is running"
echo " -k --kill kill Minecraft server"
echo " -a --attach attach minecraft server screen"
echo " -l --log tailf server log"
echo ""
echo " usage: \"ctrl + a + d\" to detache screen"
exit
fi
# --run
if [ $OPT == -r ] || [ $OPT == --reboot ]; then
PID=`ps -ef | grep $JARNAME | grep -v -E 'grep|SCREEN' | awk '{printf $2}'`
if [ -n $PID ]; then
nohup kill $PID > /tmp/screen.log 2>&1 &
fi
nohup screen -X -S minecraft_server quit > /tmp/screen.log 2>&1 &
sleep 3
screen -R minecraft_server java -Xms${XMS} -Xmx${XMX} -jar $JARNAME nogui
exit
fi
# --kill
if [ $OPT == -k ] || [ $OPT == --kill ]; then
PID=`ps -ef | grep $JARNAME | grep -v -E 'grep|SCREEN' | awk '{printf $2}'`
if [ -n $PID ]; then
nohub kill $PID > /tmp/screen.log 2>&1 &
fi
nohup screen -X -S minecraft_server quit > /tmp/screen.log 2>&1 &
echo "kill finish"
exit
fi
# --attach
if [ $OPT == -a ] || [ $OPT == --attach ]; then
SRVCOUNT=`screen -ls | grep minecraft_server | wc -l`
if [ $SRVCOUNT -eq 1 ]; then
screen -r minecraft_server
elif [ $SRVCOUNT -gt 1 ]; then
echo "multi server screen"
screen -ls | grep minecraft_server
elif [ $SRVCOUNT -lt 1 ]; then
echo "server screen not running"
fi
exit
fi
# --log
if [ $OPT == -l ] || [ $OPT == --log ]; then
tailf logs/latest.log
exit
fi
# error param
echo "error param"
echo "usage:"
echo " $0 [option]"
$0 --help
使用的是 centos7,ubuntu應該差不多,tailf 要改成 tail -f 其他應該一樣