【发布时间】:2015-02-14 23:01:42
【问题描述】:
我目前正在为运行 ubuntu 的 vm 开发一个简单的部署脚本。 所有这些机器都应该运行作为 jar 提供的 java 应用程序。
这是安装java脚本的相关部分,将jar从本地机器复制到远程机器,然后启动应用程序:
ssh ubuntu@$line -i ~/.ssh/key.pem -o StrictHostKeyChecking=no <java_installation.sh
scp -i ~/.ssh/key.pem $JARFILE ubuntu@$line:~/storagenode.jar
ssh ubuntu@$line -i ~/.ssh/key.pem <java_start_jar.sh
通过 java_installation.sh 脚本安装成功,scp 命令也成功。 尝试通过 ssh 执行 java_start_jar.sh 中的命令时会出现问题。 java_start_jar.sh:
#!/bin/sh
# this script starts a jar file and creates a shellscript which can be used to stop the execution.
nohup java -jar ~/storagenode.jar & > ~/storagenode.log
pId=$!
echo "kill $pId" > ~/stop_storagenode.sh
chmod u+x ~/stop_storagenode.sh
脚本开始执行 .jar 文件,但随后只是阻塞。 ssh 不返回,其余的本地代码只有在手动关闭连接后才会执行。 任何想法为什么 java 应用程序不能作为后台进程正确运行?
【问题讨论】: