如果服务器崩溃,将自动重新启动的Shell脚本
当Java进程经常死机时,不得不进行设置的脚本,进行死活监测并在出现问题时重新启动。
#!/bin/sh
monitorInterval=3
bootWait=10
partOfProgramName="minecraft_server"
while true
do
isAlive=`ps -ef | grep $partOfProgramName | grep -v grep | wc -l`
if [ $isAlive = 1 ]; then
echo "[起動中]: $partOfProgramName `date`"
else
echo "[停止]: $partOfProgramName `date`"
flag=true
while $flag
do
echo "[再起動中]: $partOfProgramName"
isRebooted=`ps -ef | grep $partOfProgramName | grep -v grep | wc -l`
if [ $isRebooted = 1 ]; then
flag=false
fi
sleep $bootWait
/usr/bin/java -Xmx840M -Xms840M -jar minecraft_server.1.10.jar nogui & >/dev/null
done
fi
sleep $monitorInterval
done
将其放入与程序相同的文件夹中,并且一起运行,这样就可以自动恢复。
用途はAWSのt2.microみたいな貧弱なサーバーにminecraftのサーバー立てたりする時に使う。
如果还是不行的话,
#!/bin/sh
bootWait=10
partOfProgramName="minecraft_server"
isAlive=`ps -ef | grep $partOfProgramName | grep -v grep | wc -l`
if [ $isAlive = 1 ]; then
echo "[起動中]: $partOfProgramName `date`"
else
echo "[停止]: $partOfProgramName `date`"
flag=true
while $flag
do
echo "[再起動中]: $partOfProgramName"
isRebooted=`ps -ef | grep $partOfProgramName | grep -v grep | wc -l`
if [ $isRebooted = 1 ]; then
flag=false
fi
sleep $bootWait
/usr/bin/java -Xmx840M -Xms840M -jar minecraft_server.1.10.jar nogui & >/dev/null
done
fi
在crontab中注册并执行此项。如果一直保留到这一步,它就不会轻易关闭。但要记得,如果连restart_svr.sh也注册进去了,在关机时需要记得暂停cron的运行。