我有一个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
,它可以工作。