4

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

process-one &
process-two &

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

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

我试过使用Jekins SSH 插件Publish Over SSH 插件并做同样的事情。前面的所有步骤,停止进程,重新启动其他服务,引入新代码都可以正常工作。但是当我到达启动服务的部分时。它执行这两行,并且没有任何插件或默认脚本执行可以离开服务器。它们要么挂起,直到我重新启动 Jekins,要么在 Publish Over SSH 插件的情况下超时。所以我的构建要么需要重新启动 Jenkins,要么被标记为不稳定。

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

nohup process-one &

但同样的事情也发生了。也不是服务搞砸了,因为它们实际上可以正常启动,只是詹金斯似乎不明白这一点。

任何帮助将不胜感激。谢谢你。

4

1 回答 1

5

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

分离输出并远程启动流程

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

Python 守护进程

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

于 2013-08-14T16:26:40.053 回答