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

时间:2012-10-07 10:15:53

标签: java linux ssh

我在Java中实现了一个名为Provider的服务器,以及用于启动它的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

当我想在不同的机器(machine2)

执行以下脚本时
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

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

1 个答案:

答案 0 :(得分:2)

我认为问题是远程sshd不会关闭ssh会话,因为后台仍然有一个运行的java进程可能会尝试写输出。< / p>

尝试将后台进程stdout和stderr重定向到“/ dev / null”; e.g。

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