私はこのbash.shを使用して障害が発生した場合にゲームサーバーを起動して再起動します。 @rebootとして実行されます。
while true; do
./Server
done
このサーバーが停止したら、定期的に更新する必要があります。閉じるのは不可能に見えます。私が使っている他のスクリプトや言語では
if ($exists(filename.txt)) { halt }
壊れないプロセスのwhileループでは、空のファイルをプロセスディレクトリに配置でき、ファイルが存在する場合、スクリプトはスクリプトを停止し、終了した後にプロセスを再起動します。これは私にとって最も簡単な解決策のようです。この状況ではどうすればよいですか?
答え1
それは次のとおりです。
until [ -e filename.txt ]; do
./Server
done
それは次のとおりです。
while [ ! -e filename.txt ]; do
./Server
done
Linuxを使用している場合は、次のようにすることもできます。
while true; do
# wait for filename.txt to be removed if it's there:
inotifywait -qe DELETE_SELF filename.txt 2> /dev/null
./Server
done
Server
ファイルが存在する場合にのみ起動を防ぎ、ファイルが削除されたらすぐに再起動します。
マシンの管理者であれば、それを適切に保護し、必要に応じて予期しないシャットダウン時に再起動(再起動)するなどのタスクを担当するinitシステムが処理するサービスとして追加する方が合理的です。次に、編集のservice whatever stop
前後に作業を実行しますstart
。
答え2
break
次のコマンドを使用できます。
while true; do
./Server
if [ -e filename.txt ] ; then
break
fi
done
ただし、上記のスクリプトは引き続き実行されるため./Server
危険です。