У меня есть 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 запускался через 5 минут после abc.jar?

Любая помощь будет оценена, спасибо.

1 ответ1

0

В вашем первом примере:

/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

Вы запускаете abc.jar и говорите своему bash-скрипту, чтобы он запускал xyz.jar после успешного выхода из abc.jar . Таким образом, abc.jar необходимо остановить до того, как xyz.jar начнет работать.

Ваш второй пример является хорошим примером последовательного запуска, однако, если вы хотите, чтобы они оба работали одновременно, просто второй, чтобы начать позже, как вы задали в своем вопросе:

Также есть ли способ, чтобы xyz.jar запускался через 5 минут после abc.jar?

Тогда первый пример наиболее близок к рабочему решению. То, что я предлагаю вам сделать, это вставить 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 (на переднем плане вы можете добавить & снова, если хотите, чтобы он был в фоновом режиме).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .