0

スクリプト作成の経験はほとんどありませんが、スクリプト作成に取り組みたいと思っています。

基本的に、これは StarMade サーバー用です。その Java プロセスはクラッシュ時にシャットダウンせずに実行されたままになるため、クラッシュを適切に検出することが難しくなり、これらは非常に頻繁に発生します。

私が望むのは、サーバーがフリーズ/クラッシュしたことを示すサーバーログファイルの特定の行を見つけ、この行を読み取った後にプロセスを強制終了し、別のスクリプトがプロセスを再起動することです(その部分は既に取得されています)。ログ ファイルはサーバーによって継続的に更新されるため、スクリプトは基本的に何らかの方法でファイルを「監視」する必要があります。

このアイデアに完全に一致するものはどこにも見つかりませんでしたが、多くの情報源から何かをかき集めようとしましたが、完全に間違っていると確信しています。

#!/bin/bash
cd "$(dirname "$0")"
if grep -Fxq "[SERVER] SERVER SHUTDOWN" log.txt.0
then
    kill -9 $(pidof StarMade.jar)
else
    false
fi

私が知る限り、これはファイルlog.txt.0を継続的にチェックして、「[SERVER] SERVER SHUTDOWN」と直接一致するものを見つけ、サーバープロセスを強制終了するか、そうでない場合は何もしません。それを行う正しい方法は?愚かな間違いで物事を壊したくありません。

4

1 に答える 1

0

これを試して:

if ( grep -Fxq "[SERVER] SERVER SHUTDOWN" log.txt.0 > /dev/null ); then
    kill -9 $(pidof StarMade.jar)
fi
于 2013-11-07T04:35:16.870 に答える