最近、Javaアプリケーションは次のように起動されたホストを取得しました。
/bin/bash ./restarter.sh java <lot of java params>
アプリケーションがシャットダウンしたときにrestarter.sh
再実行されることを保証します。
以下の内容がありますrestarter.sh
。
#!/bin/bash
until "$@"; do
echo "Server crashed with exit code $?. Respawning.." >&2
sleep 1
done
どのように動作するかを理解するのに役立ちます。
答え1
これは、コマンド(「$ @」)が実行を完了し、コード0で終了するまで繰り返すことを意味します。
例:
$ until (echo Myprog ; sleep 1; exit 1;); do echo Error respawning ...; done
Myprog
Error respawning ...
Myprog
Error respawning ...
Myprog
^C
$ until (echo Myprog ; sleep 1; exit 0;); do echo Error respawning ...; done
Myprog
スクリプトを分析します。 通常、よく書かれたアプリケーションは、正常に完了するとゼロ終了コードで終了し、そうでなければゼロ以外の終了コードで終了します。あなたの場合は、アプリケーションの再起動を続行するためにUntilコマンドを使用しています。
java <lot of java params>
アプリケーションが正常に実行を完了するまで(終了コード0)。