Mam 2 pliki jar, które mówią abc.jar i xyz.jar, chcę je kolejno uruchamiać jeden po drugim.
kiedy mój start.sh jest taki
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar abc.jar &
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar xyz.jar
ale dzięki temu oba słoiki zaczynają się jednocześnie.
Kiedy mój start.sh jest taki
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar abc.jar &&
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar xyz.jar
Rozpocznie się tylko pierwszy abc.jar.
Także jeśli istnieje sposób, że xyz.jar uruchamia się po 5 minutach abc.jar?
Każda pomoc będzie mile widziana, dzięki.
docker
w tytule pytania i w tagach?Odpowiedzi:
W twoim pierwszym przykładzie:
Najpierw zaczynasz
abc.jar
w tle (używając&
), a potemxyz.jar
zaraz potem, więc oba działają jednocześnie.W drugim przykładzie:
Zaczynasz
abc.jar
i każesz skryptowi bash uruchomić,xyz.jar
gdyabc.jar
zakończy się pomyślnie . Dlategoabc.jar
musi się zatrzymać, zanimxyz.jar
zacznie działać.Drugi przykład jest dobrym przykładem sekwencyjnego uruchamiania, jednak jeśli chcesz, aby oba działały w tym samym czasie, tylko drugi zacznij później, tak jak zadałeś pytanie:
Wtedy pierwszy przykład jest najbliższy działającemu rozwiązaniu. To, co sugeruję zrobić, to wstawić
sleep 5m
po uruchomieniuabc.jar
w tle:Spowoduje to uruchomienie skryptu
abc.jar
w tle, uśpienie przez 5 minut, a następnie rozpocznie sięxyz.jar
(na pierwszym planie możesz dodać&
ponownie, jeśli chcesz, aby był w tle).źródło