Generated by Answer me with HTML 0.5.10 · 2026-11-03 08:54 · ★ Star on GitHub

回测回执为什么只剩一行横幅

不是脚本没报错,是现场被下一次重跑冲掉了

source~/.hermes/logs/process-results/proc_4f111663c33e.json + stage12.log
A

你看到的那条不是报错

机制

横幅是 Hermes 启动时打印的系统信息。命令自己的输出全部重定向进文件后,捕获流里就只剩它。回执于是只给你主机名、CPU、内存、版本这几行。

失败任务
proc_4f111663c33e
命令
python3 stage12_overlay.py > stage12.log 2>&1
退出码
1
耗时
约 5 秒
捕获输出
仅横幅
日志 mtime
23:39
失败时刻
23:34

关键点:命令里已经写了 2>&1,stderr 并没有跑掉。所以不是「只重定向了 stdout」那种常见坑。

B

这次 23:34 到底发生了什么

时间 事件 证据
23:34 第一次运行,5 秒退出 1 进程回执 exit_code=1
23:34 报错写进 stage12.log 命令含 2>&1
23:38 重跑,正常完成 进程回执 exit_code=0
23:39 同一文件名被覆盖 日志末行 stage12 done 63s

现在 stage12.log 里是 23:38 那次成功运行的完整输出,53 行,末尾写着耗时 63 秒。失败那次的 traceback 已经不存在了。

补充判断

5 秒退出 1 属于启动期死亡,不是跑一半崩的。真 OOM 的退出码是 137,且 dmesg 有 killed process 记录。当前内存 1.28G 已用、可用 425M,MemoryError 可能但无法证实。

C

以后我这样跑,回执自带报错

留痕跑法 · 固定日志改为追加bash
cd /root/lxxg/hdl_decomp{ echo "=== RUN $(date +%F_%T)"; \  python3 -W ignore stage12_overlay.py; \  echo "EXIT=$?"; } >> stage12_runs.log 2>&1
  • 追加式日志永不覆盖,历史失败全部留档。
  • 要回执直接带 traceback,改用 ... > log 2>&1; echo EXIT=$?; tail -40 log。
  • 长跑任务不写死文件名,按次命名 stage12_$(date +%H%M%S).log。

这套规则已写进 hermes-task-runtime-audit 技能,下次失败回执里会直接给出退出码和最后 40 行。