编写bash或其他脚本以重新启动另一个脚本

时间:2015-04-23 22:22:14

标签: java linux bash minecraft

我正在为我的儿子运行一个Minecraft服务器,我是Minecraft服务器的新手,无论如何它似乎一直在死,因为它无法跟上?好吧所以它的VM和我将在某些时候为它分配更多的资源,但我的问题如下

我通过脚本启动服务器加载 bukkit.sh是里面的脚本

#!/bin/bash
java -Xmx1024M -jar /minecraftserver/bukkitserver/craftbukkit-1.7.1.jar -o true

现在在白天或晚上的某个时刻它会因为无法跟上而死亡,有没有办法可以让其他脚本同时运行并看到进程已经死亡并再次运行该脚本来启动服务器

当我运行top时,我可以看到java使用所有资源在顶部,所以我100%认为是我的Minecraft java。每次加载时PID是否保持不变?

如果有人可以放手一点,那会很棒......

2 个答案:

答案 0 :(得分:1)

我认为java进程一旦启动就会保持在前台?你有什么理由可以做到:

while :
do
  java -Xmx1024M -jar /minecraftserver/bukkitserver/craftbukkit-1.7.1.jar -o true
done

然后,只要java退出,脚本就会重新启动它。

答案 1 :(得分:0)

编辑: 你可以创建一个脚本,让我们称之为craftbukkit.sh

确保使用以下内容执行:chmod +x craftbukkit.sh

然后在脚本内写下:

#!/bin/sh

ps auxw | grep craftbukkit-1.7.1.jar| grep -v grep > /dev/null

if [ $? != 0 ]
then
        /path/to/your/bukkit.sh
fi

/path/to/your/bukkit.sh更改为Minecraft启动脚本所在的位置。

然后您需要将此脚本添加到您的crontab,这可以通过输入crontab编辑器来完成:crontab -e

如果您希望脚本每5分钟运行一次,请添加如下所示的行:

*/5 * * * * /path/to/craftbukkit.sh

请注意,您必须将/ path /更改为指向您创建craftbukkit.sh脚本的位置。

相关问题