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

标签 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

它毫无问题地返回控制台,所以我可以获得执行状态“$?”

最佳答案

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

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

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

关于java - 在 linux 脚本中运行远程 java 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12767905/

相关文章:

ubuntu - 如何使用 ansible 打开 SSH 隧道?

java - 使用类的对象来获取对其内容的引用的术语或习惯用法是什么?

使用 Eclipse + PyDev 在 Linux 中进行 Python Gtk+ 开发, Unresolved 导入 : Gtk

python - mkvirtualenv 命令是什么意思?这是Linux命令还是python命令..?

linux - Kurento - WebRTC 不能在 linux 虚拟机 azure 服务器上运行

c# - 在不使用自定义组件的情况下,使用SFTP连接到远程服务器并下载文件是否可行?

使用 gcloud ssh 导致代理拒绝

java - 如何从多个存储库中拉取相关信息?

java - 嵌套泛型类型接口(interface)

java - 通过 Spring XmlWebApplicationContext 指定相对资源路径