0

sh スクリプトに問題があります。バックグラウンドでJavaスクリプトを実行できるshスクリプトに取り組んでおり、実行する前に、現在実行されているかどうかを確認します。

コードは次のとおりです。

## START ##
start)
echo $" "
echo $"Checking for agents running, wait please..."
MI_PS=$(ps -ef|grep $JAR_NAME |awk '{print $2, $7}' |egrep -v "00:00:00" |awk '{print$1}')

sleep 1
for kill_process in $MY_PS; do
/bin/kill -9 $kill_process
done

# Verificamos que se ha realizado correctamente
VERIFY=$?
if [ "$?" = "0" ]; then
    echo -n "Jar instance stopped correctly"
    echo -ne "\033[0;32m                     [OK] \033[0m"
    echo $" "
else
    echo -n "Jar instance stopped incorrectly"
    echo -ne "\033[0;31m                     [Error] \033[0m"
    echo ""
    echo "It is required to kill process "$MY_PS" manually."
    echo "Ask your administrator"
    echo $" "
fi

echo $" "
echo -n "Starting Jar"
echo $" "

nohup java -Dprops.dir=conf -jar func.jar &

echo $" "
echo -n "Jar running"
echo -ne "\033[0;32m                                            [OK] \033[0m"
echo $" "
;;

私が抱えている問題は、nohup ... &を設定するときに、バックグラウンドの jar ファイルで実行するために何もしていないことです。私が書く場合:

java -Dprops.dir=conf -jar func.jar

その後、動作します。私のjarファイルはQuartzライブラリ(Javaのスケジューラライブラリ)を使用しています.NohupとQuartzの間に互換性がないかどうか知っている人がいるかどうかはわかりません...

または、JVM 変数 ( -Dprops.dir=conf )の設定に何らかの問題がある可能性があります。

ありがとう!

4

1 に答える 1

0

私は自分の問題を理解しました.Quartzとはまったく関係がないことが判明しました. 私はいくつかの安価な非同期タスクに SwingUtilities.invokeLater() を使用していました。何らかの理由で、デスクトップで xwindows を実行している場合にのみプログラムが機能していましたが、コンピューターをシャットダウンしたときにエラーが記録されずに終了しました (xwindows もシャットダウンしました)。修正は、 -Djava.awt.headless=true でプログラムを開始することでした

于 2013-09-16T16:50:24.923 に答える