【问题标题】:Run remote java server in linux script在 linux 脚本中运行远程 java 服务器
【发布时间】:2012-09-27 21:18:43
【问题描述】:

我有一个用 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

问题是上面的脚本运行后没有返回console,虽然Provider启动了却挂了。

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

ssh machine2 asadmin start-domain

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

【问题讨论】:

    标签: java linux ssh


    【解决方案1】:

    我认为问题在于远程sshd 不会关闭 ssh 会话,因为后台仍有一个 java 进程在运行,可能试图写入输出。

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

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

    【讨论】:

    • 你是对的,因为java进程试图写出sshd并没有关闭ssh会话。在本地运行相同的脚本时以某种方式理解。正如您建议的问题已解决,我已将 java 进程输出转发到 /dev/null。谢谢。
    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    相关资源
    最近更新 更多