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