Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 建造原木';“从Hudson启动Java时无法完成”;执行shell";_Unix_Shell_Hudson - Fatal编程技术网

Unix 建造原木';“从Hudson启动Java时无法完成”;执行shell";

Unix 建造原木';“从Hudson启动Java时无法完成”;执行shell";,unix,shell,hudson,Unix,Shell,Hudson,作为应用程序部署的一部分,我使用Hudson在远程发布服务器上启动构建的应用程序。这是通过使用“executeshell”选项指定生成后步骤来完成的 我将deploy.sh脚本复制到远程服务器,并通过ssh执行它,例如 scp /opt/myapp/deploy.sh myapp@myserver:/export/home/myapp/scripts/ ssh myapp@myserver "/export/home/myapp/scripts/deploy.sh" deploy.sh脚本启动

作为应用程序部署的一部分,我使用Hudson在远程发布服务器上启动构建的应用程序。这是通过使用“executeshell”选项指定生成后步骤来完成的

我将deploy.sh脚本复制到远程服务器,并通过ssh执行它,例如

scp /opt/myapp/deploy.sh myapp@myserver:/export/home/myapp/scripts/
ssh myapp@myserver "/export/home/myapp/scripts/deploy.sh"
deploy.sh脚本启动java应用程序,然后将PID写入文件,例如

java -jar /opt/myapp/myapp.jar > /opt/myapp/myapp.log &
echo $! > /var/run/myapp/myapp.pid
(注意:在此之前有一些步骤-例如解压缩部署包)

奇怪的是,当我运行Hudson构建时,它似乎在通过SSH执行deploy.sh脚本之后挂起。java应用程序启动并将正确的PID写入文件。哈德逊似乎无法检测到脚本已经完成。如果我执行Java启动步骤,就不会有任何问题

有人能看到我错过了什么吗

谢谢


Andrew

从SSH会话启动后台进程时,需要重定向所有后台进程的I/O。否则,在退出时

因此,将java启动命令更改为:

java -jar /opt/myapp/myapp.jar > /opt/myapp/myapp.log 2>&1 < /dev/null &
java-jar/opt/myapp/myapp.jar>/opt/myapp/myapp.log 2>&1
您是否尝试过为Java流程制定nohup?这是一个很好的建议,但似乎不起作用。