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