【问题标题】:Background process terminates after the deployment group phase ended部署组阶段结束后后台进程终止
【发布时间】:2018-10-10 07:32:41
【问题描述】:

我正在使用 Azure DevOps(以前称为 VSTS)在 Linux 机器(特别是 CentOS 机器)中运行脚本。

我有一个在后台运行进程的内联脚本任务,但在部署组阶段结束之后。创建的进程也被终止。

下面是我写的示例脚本

使用屏幕:

screen -dm ping localhost

结果:

  • 发布成功
  • 在目标服务器中找不到进程 ID
  • 显示屏幕为dead

使用 nohup + 重定向 + & 符号

nohup ping localhost 2>&1 &

结果:

  • 任务未完成,卡住了。

这是 VSTS 部署代理的默认行为吗?

【问题讨论】:

  • screennohup 都意味着在用户再次注销或失去连接后保持进程在继续运行的机器上运行。他们无法在机器关闭后幸存下来。您确定在您断开连接后机器(可能是虚拟机)真的继续运行吗?
  • @Alfe,是的。我通过 PuTTY 手动运行它,关闭了终端。使用不同的用户名再次连接到 VM,我仍然可以看到 PID。

标签: azure-devops sh agent


【解决方案1】:

是的,这是默认行为。 VSTS 将在构建/部署完成时关闭执行期间启动的所有进程。

【讨论】:

  • 感谢您的确认。我们有这方面的官方文件吗?
  • @FreddieFabregas 我没有找到任何文档,但是您可以在此处参考源代码:github.com/Microsoft/azure-pipelines-agent/blob/… 您可以将“process.clean”变量设置为“false”来排队您的构建或部署" 这样启动的进程就不会被杀死。但由于这还没有记录,我不确定它是否会在未来发生变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多