当前位置: 首页 > 面试题库 >

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

麹承
2023-03-14
问题内容

我需要一种方法来轻松地重新启动/替换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”’,我需要一种更简单的方法来替换正在运行的脚本。

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

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

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


问题答案:

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

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


 类似资料:
  • 问题内容: 我编写了一个脚本,该脚本可以通过从网站上下载最新版本并覆盖正在运行的脚本来保持最新状态。 我不确定更新脚本后重新启动脚本的最佳方法是什么。 有任何想法吗? 我真的不想要一个单独的更新脚本。哦,它也必须在两个linux / windows上都可以工作。 问题答案: 在Linux或任何其他形式的Unix中,os.execl和它的朋友是一个不错的选择- 您只需要重新执行sys.executa

  • 如何设置用bash编写的脚本,以便在操作系统启动时执行?我在Kali Linux上,已经添加了执行权限。

  • 问题内容: 在Amazon S3 Linux实例上,我有两个名为的脚本,它们 永远 启动和停止(依次运行Node.js应用程序)。我使用这些脚本手动启动和停止我的Node.js应用程序。到目前为止,一切都很好。 我的问题:我还想将其设置为在系统启动时运行。我知道我需要在其中添加文件,并且知道如何将其符号链接到其中的适当目录,但是我无法弄清楚放置在其中的文件中实际需要什么。我认为这应该只是一条线,例

  • 我目前在我的node js服务器上安装了ts-node-dev,并让它使用--respawn标志监视我的.ts文件。我的服务器正在成功地重新启动,但是当.ts文件更改时,我需要运行类似的命令来编译更改的文件(或所有文件),以确保我的更改存在于重新启动的服务器中。 我似乎找不到在服务器重新启动时运行脚本的方法。 我试过这样的事情: 但它试图将命令解析为文件名。 如何将脚本绑定到我的重启过程中? 这是

  • 我试图在重启时运行一个简单的. sh脚本。我想让这个脚本永远运行。我在用户目录的一个文件夹中有这个脚本,在中。它在一个简单的vps上运行,我可以通过ssh访问。如果我通过执行

  • 问题内容: 首先,这可能需要移至超级用户。我无法确定哪个场地更好。 我正在尝试编写一个将在启动/重新启动时运行的R脚本,并将该计算机添加到doRedis工作者池中。(doRedis是一个foreach后端)。 这是我的R脚本“〜/ Rworker.R” 我可以使用command从命令行运行此脚本 。 接下来,我编写了一个shell脚本来运行R脚本,标题为“ /etc/init.d/StartWor