You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GitHub工作流后台运行mpstat失败:输出文件未生成且报找不到文件

GitHub Actions中后台运行mpstat无输出文件的问题分析与解决

核心问题

GitHub Actions的每个步骤(step)执行完成后,会自动终止该步骤启动的所有子进程。你在Collect Workflow Telemetry步骤中后台启动的mpstat,会在该步骤结束时被立即杀死,根本没有机会生成或写入输出文件,后续步骤自然找不到telemetry.out。

另外,使用相对路径可能因工作目录变化(尽管默认不会,但存在风险)导致文件查找失败,建议改用绝对路径。

解决方案

方案1:将mpstat与测试放在同一步骤执行

把mpstat启动、测试运行、mpstat终止放在同一个step里,确保mpstat在测试全程持续运行:

steps:
  - uses: actions/checkout@v3
  - name: Run Test with Telemetry
    run: |
      # 启动mpstat后台进程,记录PID,使用绝对路径输出
      mpstat -P ALL 5 > $GITHUB_WORKSPACE/telemetry.out 2> $GITHUB_WORKSPACE/telemetry.err < /dev/null &
      MPSTAT_PID=$!
      # 执行测试(若自定义action是脚本可直接运行,示例如下)
      ./.github/actions/test/run-test.sh
      # 测试完成后终止mpstat
      kill $MPSTAT_PID
      wait $MPSTAT_PID 2>/dev/null
  - name: Check Telemetry Output
    run: cat $GITHUB_WORKSPACE/telemetry.out

方案2:用nohup让mpstat脱离当前shell

如果必须保留独立的步骤结构,使用nohup让mpstat不受当前step结束的影响,测试完成后再终止它:

steps:
  - uses: actions/checkout@v3
  - name: Install sysstat (若运行器未预装)
    run: sudo apt-get update && sudo apt-get install -y sysstat
  - name: Start Telemetry Collection
    run: |
      nohup mpstat -P ALL 5 > $GITHUB_WORKSPACE/telemetry.out 2> $GITHUB_WORKSPACE/telemetry.err < /dev/null &
  - uses: ./.github/actions/test
  - name: Stop Collection and View Telemetry
    run: |
      pkill mpstat
      cat $GITHUB_WORKSPACE/telemetry.out

额外注意事项

  • 确认运行器已安装sysstat包(mpstat属于该包),若未预装需添加安装步骤。
  • 始终使用$GITHUB_WORKSPACE作为输出文件的绝对路径前缀,避免路径歧义。

内容的提问来源于stack exchange,提问作者KatKibo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 19:30:36