我的 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 文件正在使用石英库(Java 的调度程序库),我不知道你们中是否有人知道 nohup 和石英之间是否有任何不兼容...
或者,设置 JVM 变量( -Dprops.dir=conf)可能存在某种问题
谢谢!