我有一个start
函数,我把它放在一个远程站点上的脚本中,函数的代码显示在下面。
function start() {
cd $install_dir
mkdir -p logs
export classpath=$classpath:$target_jar
nohup java -Xms2048m -Xmx8192m -server -XX:PermSize=128m -XX:MaxPermSize=256m \
-XX:+PrintGCDetails -XX:+PrintGCDateStamps \
-XX:-OmitStackTraceInFastThrow \
-cp $target_jar $main_class >> logs/jvm.log 2>&1 &
echo "Service started, see logs"
}
当我尝试使用ssh ssh xxx@host "./service.sh start"
调用该函数时,我无法启动java进程,我只收到响应消息“Service started,see logs”并且没有错误,jvm.log是也空了。显然我的脚本已经执行了,但目标java进程没有运行。
如果我登录到该远程站点并执行./service.sh start
,则可以正常工作。
答案 0 :(得分:0)
由于您可以手动运行该服务,因此ssh和脚本部分没问题。
环境可能出现问题。例如,您引用了没有绝对路径的java。因此,您可能正在运行它的不同版本。共享库加载的变量(LD_LIBRARY_PATH)也可能具有不同的值。
最后检查文件许可