在linux脚本中运行远程java服务器

我有一个名为Provider的Java实现的服务器,并启动它的Linux脚本。

#!/bin/bash echo "Provider" $JAVA_HOME/bin/java -cp /tmp Provider& $JAVA_HOME/bin/java -version rm /tmp/pid echo "$!"> /tmp/pid echo "Provider-finish" exit 0 

当我想在不同的机器(机器2)上执行以下脚本时,

 root@machine1:/tmp# ssh machine2/tmp/runScript.sh Provider java version "1.6.0_29" Java(TM) SE Runtime Environment (build 1.6.0_29-b11) Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing) Provider-finish Waiting for connection 

问题是,在脚本之上运行之后,它不会返回控制台,但在Provider启动的时候会挂起。

我已经分析了类似的概念,如Glassfish域的开始。 通过执行

 ssh machine2 asadmin start-domain 

它返回控制台没有任何问题,所以我可以得到执行状态“$?”

我认为问题是远程sshd不会关闭ssh会话,因为在后台运行的java进程可能会尝试写入输出。

尝试将后台进程stdout和stderr重定向到“/ dev / null”; 例如

 $JAVA_HOME/bin/java -cp /tmp Provider > /dev/null 2>&1 &