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 文件正在使用石英库(Java 的调度程序库),我不知道你们中是否有人知道 nohup 和石英之间是否有任何不兼容...

或者,设置 JVM 变量( -Dprops.dir=conf)可能存在某种问题

谢谢!

4

1 回答 1

0

我发现了我的问题,结果证明它根本与 Quartz 无关。我将 SwingUtilities.invokeLater() 用于一些廉价的异步任务。出于某种原因,该程序只有在我的桌面上运行 xwindows 时才能运行,但在我关闭计算机(也关闭 xwindows)时会终止且不会记录任何错误。解决方法是使用 -Djava.awt.headless=true 启动程序

于 2013-09-16T16:50:24.923 回答