使用SSH(脚本,插件等)启动进程

时间:2013-08-14 14:15:53

标签: jenkins jenkins-plugins

我正在尝试通过重新启动使我的Python App工作的两个进程来完成远程部署。像这样

process-one &
process-two &

我试图通过这样做来“执行一个Shell脚本”

ssh -i ~/.ssh/id_... user@xxx.xxx ./startup.sh

我尝试过使用Jekins SSH PluginPublish Over SSH Plugin并做同样的事情。所有前面的步骤,停止进程,重新启动其他服务,拉入新代码工作正常。但是当我到达我开始服务的那一部分时。它执行这两行,并且插件或默认脚本执行都不能脱离服务器。它们都会挂起,直到我重新启动Jekins或者在发布通过SSH插件的情况下超时。所以我的构建需要重启Jenkins,或者标记为不稳定。

有没有人做过类似的事情?我试过了

nohup process-one &

但同样的事情发生了。并不是说服务也搞乱了,因为它们实际上是正常启动的,只是Jenkins似乎并不理解这一点。

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:5)

生成的过程(即使使用&)消耗与ssh连接相同的输入和输出可能会发生什么。 Jenkins正在等待这些管道在作业关闭之前被清空,因此等待进程退出。您可以通过终止进程来验证,并且您将看到jenkins作业终止。

分离输出并远程启动流程

您的问题有多种解决方案:

Python守护程序

最初的问题主要集中在SSH上,所以我没有完全描述如何将python进程作为守护进程运行。这主要包含在其他技术中: