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 )の設定に何らかの問題がある可能性があります。
ありがとう!