一位曾在 AI Agent 后端实习的开发者发现,Agent 运行 tail -f 或后台任务后退出时,这些进程不会被终止,沦为残留进程。他调研后发现 Claude Code 也存在同类问题:其 Bash 工具在会话结束后不清理后台进程,另一处缺陷则是超时机制向整个进程组发送 SIGTERM,结果误杀 Claude Code 自身。多数运行器只会杀死直接启动的进程,凡是二次 fork、转入后台或保持 stdout 打开的进程,要么存活下来,要么导致运行器挂起。为此,作者开发了开源工具 Corral,用法为 corral –wall 30s — yourcommand,命令执行完毕后,它启动的所有进程都将被确保终止。Corral 让目标命令运行在独立会话中,避免误杀自身;同时提供 cgroup 模式,将整棵进程树一次性杀死,包括已变更会话或进程组的进程。在 cgroup 不可用时,工具退化为通过 /proc 追踪进程树,能力较弱,仍能捕获父进程死后变更会话的进程,但无法杀死其他用户或已移交 systemd 等服务的进程。若无法确认所有进程均已终止,Corral 会以退出码 120 报告异常。作者表示该项目也是学习 Linux 进程与信号机制的实践,欢迎社区反馈。
事件分析
核心观点:AI Agent 越自主执行命令,进程治理与沙箱边界这类脏活就越成为比模型能力更先暴露的基础设施短板。
原文链接:Hacker News

评论前必须登录!
立即登录 注册