使用 shell 脚本和 docker 按顺序(而不是同时)运行多个 jar 文件

使用 shell 脚本和 docker 按顺序(而不是同时)运行多个 jar 文件

我有2个jar文件,分别是abc.jar和xyz.jar,我想按顺序一个接一个地运行它们。

当我的start.sh是这样的

/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar abc.jar &
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar xyz.jar

但这样,两个罐子就会同时启动。

当我的start.sh是这样的

/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar abc.jar &&
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar xyz.jar

仅先启动abc.jar。

另外,是否有办法让 xyz.jar 在 abc.jar 启动 5 分钟后启动?

任何帮助都将不胜感激,谢谢。

答案1

在您的第一个例子中:

/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar abc.jar &
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar xyz.jar

您首先abc.jar在后台启动(使用&),然后立即启动xyz.jar,因此它们同时工作。

在第二个示例中:

/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar abc.jar &&
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar xyz.jar

你启动并告诉你的 bash 脚本何时abc.jar启动xyz.jarabc.jar 成功退出.因此abc.jar需要在xyz.jar开始工作前停下来。

您的第二个示例是顺序启动的一个很好的例子,但是,如果您希望它们同时工作,则只需让第二个示例稍后启动,正如您在问题中所问的那样:

另外,是否有办法让 xyz.jar 在 abc.jar 启动 5 分钟后启动?

那么第一个示例是最接近可行的解决方案的。我建议您在后台sleep 5m启动后插入一个:abc.jar

/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar abc.jar &
sleep 5m
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar xyz.jar

这将使您的脚本abc.jar在后台启动,休眠 5 分钟,然后启动xyz.jar(在前台,&如果您希望它在后台运行,可以再次添加)。

相关内容