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