no脚本sh脚本无法正常工作

时间:2012-09-18 09:00:09

标签: java shell quartz-scheduler nohup

我遇到了sh脚本的问题。我正在开发一个允许我在后台执行java脚本的脚本,在执行之前,检查它是否正在运行。

代码在这里:

## 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和quartz之间是否存在任何不兼容性......

或者设置JVM变量可能存在一些问题( -Dprops.dir = conf

谢谢!

1 个答案:

答案 0 :(得分:0)

我弄清楚了我的问题,结果却与Quartz根本没有关系。我正在使用SwingUtilities.invokeLater()进行一些廉价的异步任务。出于某种原因,该程序只有在我的桌面上运行xwindows时才能正常工作,但是当我关闭计算机时也会终止并且没有记录错误(同时关闭xwindows)。解决方法是使用-Djava.awt.headless = true

启动程序