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