Запускать несколько файлов JAR последовательно (не одновременно), используя сценарий оболочки и докер

361
jagga

У меня есть 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?

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

0
Вы, вероятно, не хотите && - просто поместите их в разные строки скрипта. Если вы хотите, чтобы промежуток времени между выполнением строк в сценарии проходил, поместите его в режим сна. Bruce Becker 6 лет назад 1
Кроме того, почему `docker` в заголовке вопроса и в тегах? Fanatique 6 лет назад 0

1 ответ на вопрос

0
Fanatique

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

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

Спасибо спать 5м работает отлично. jagga 6 лет назад 0

Похожие вопросы