我有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.jar
abc.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
(在前台,&
如果您希望它在后台运行,可以再次添加)。