1

我有一个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 进程,我只收到响应消息“服务已启动,查看日志”并且没有错误,jvm.log 也是空的。在我看来,我的脚本显然已经执行,但目标 java 进程没有运行。

如果我登录到该远程站点并执行./service.sh start,它可以工作。

4

1 回答 1

0

由于您能够手动运行该服务,因此 ssh 和脚本部分很好。

可能出问题的是环境。例如,您在没有绝对路径的情况下引用了 java。因此,您可能正在运行它的不同版本。共享库加载 (LD_LIBRARY_PATH) 的变量也可能具有不同的值。

最后检查文件权限

于 2013-03-26T06:25:35.950 回答