小编典典

如何在运行时更新bash脚本或轻松地重新启动它?

java

我需要一种方法来轻松地重新启动/替换bash脚本,而无需手动停止/重新启动该过程。

这是我当前脚本的工作方式:

#!/bin/sh
while true
do
  echo "1"
  java -server -Xms2G -jar game.jar nogui
done

基本上,如果游戏停止了,它将自动重新启动,但是该脚本已经加载到内存中,因此,如果我要对其进行修改,则必须手动终止该脚本并重新启动它才能使更改生效。我正在运行至少200个游戏服务器实例,所以手动执行此操作并杀死它,然后再次手动启动每个脚本并不明智。

当游戏服务器停止时,我希望它更新脚本,这是我可能想做的一个例子:

#!/bin/sh
while true
do
  echo "1"
  echo "2"
  java -server -Xms2G -jar game.jar nogui
done

但是,我需要物理上停止脚本并自己重新启动它,以便它添加新的“ echo“ 2”’,我需要一种更简单的方法来替换正在运行的脚本。

脚本本身将在游戏停止时下载更新的脚本(因此它将自动重新开始。

如何使脚本从内存中卸载自身并使用新脚本?

如果我无法做到这一点,您是否可以建议其他替代方法?


阅读 268

收藏
2020-11-30

共1个答案

小编典典

调用以下文件myscript.sh。每次游戏停止时,它将自身重新加载到内存中:

#!/bin/sh
java -server -Xms2G -jar game.jar nogui
exec /path/to/myscript.sh
2020-11-30