【问题标题】:Start daemon as one step一步启动守护进程
【发布时间】:2025-11-15 03:10:01
【问题描述】:

我的测试工作流程需要启动 2 个 NodeJS 应用程序(稍后开始测试并将 REST 请求发送到已启动的守护程序)。但显然,运行node server.js 永远不会结束(当然,直到服务器应用停止)。

我尝试以 command='nohup node server.js &' 开始,但它不起作用 - 仍在等待步骤完成。

如何启动守护程序作为测试步骤之一?

【问题讨论】:

    标签: buildbot


    【解决方案1】:

    好吧,我终于整理好了。我不知道为什么,但是如果ShellCommand 中的命令没有返回提示符(例如在命令末尾使用& 时),它会被视为“未完成并被超时杀死。所以我不能像这样启动守护进程nohup node ./server.js &.

    但如果将此命令放在 shell 脚本中,则可以解决此问题。我创建了用于启动守护进程的运行器,它可以工作。

    #!/bin/bash
    
    CMD="$1 $2 $3 $4"
    [ $# -eq 0 ] && { echo "Usage: $0 [FILE_1] [FILE_2] [FILE_3]"; exit 1; }
    eval "${CMD}" &>/dev/null &!;
    

    用法:/usr/local/bin/runner /node-v8.x-linux-x64/bin/node server.js

    【讨论】: