Generated by Answer me with HTML 0.5.10 · 2026-11-03 08:54 · ★ Star on GitHub
回测回执为什么只剩一行横幅
不是脚本没报错,是现场被下一次重跑冲掉了
你看到的那条不是报错
机制
横幅是 Hermes 启动时打印的系统信息。命令自己的输出全部重定向进文件后,捕获流里就只剩它。回执于是只给你主机名、CPU、内存、版本这几行。
- 失败任务
- proc_4f111663c33e
- 命令
- python3 stage12_overlay.py > stage12.log 2>&1
- 退出码
- 1
- 耗时
- 约 5 秒
- 捕获输出
- 仅横幅
- 日志 mtime
- 23:39
- 失败时刻
- 23:34
关键点:命令里已经写了 2>&1,stderr 并没有跑掉。所以不是「只重定向了 stdout」那种常见坑。
这次 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 可能但无法证实。
以后我这样跑,回执自带报错
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 行。