提醒:我的 Mac 无法启动,因为测试运行留下了 4100 万个 Chrome 临时文件。如果你的智能体跑浏览器测试,检查一下临时文件夹
PSA: my Mac wouldn’t boot because my test runs left 41 million Chrome temp files behind. If your agents run browser tests, check your temp folder.
r/ClaudeAI 的社区帖子,作者(独立开发者,做日志类应用)讲述其 Mac Studio 卡在启动进度条,借另一台电脑取出启动日志、用 Claude Code 帮忙分析后发现,每次启动都卡在登录前清理临时文件夹这一步,而该文件夹里有 4100 万个文件。原因是智能体启动无头 Chrome 做 UI 检查和截图时,每次运行生成一个临时 Chrome 配置文件夹,运行正常结束会删除,被中断或崩溃则残留。帖子给出的解决办法是把该文件夹移走再重启,并列出自查与预防建议:为每次运行设置独立 TMPDIR 并在退出信号时删除、结束整个进程组、加 --use-mock-keychain 等参数、测试前统计临时目录文件数。适合让智能体运行浏览器测试的开发者阅读。
- 分级
- 值得看
- 收录时间
- 2026-10-27
原帖
Every launch creates a throwaway Chrome profile folder (thousands of small files). When a run ended cleanly, it got deleted. When a run was killed (timeouts, me stopping a job, a crash), it didn’t.
中文大意
发帖人是独立开发者,做日记应用,跑大量自动化测试:agent 启动 headless Chrome 做 UI 检查和截图,每次启动生成一个临时 Chrome profile 文件夹(含成千上万小文件)。干净结束时会被删除,但运行被中断(超时、手动停止、崩溃)时不会,几周累积到 4100 万个文件,导致 Mac Studio 卡在开机进度条,安全模式和急救都无效,最后发现每次启动都死在登录前清理临时目录这一步。解决办法是把该文件夹移走再重启,随即正常启动、数据无损。他给出几条做法:每个任务用独立 TMPDIR 并在 EXIT/INT/TERM 上 trap 清理;通过包装脚本启动 Chrome 时要杀整个进程组,否则 Chrome 变成孤儿进程;加 --use-mock-keychain --password-store=basic 避免几十个测试 profile 频繁访问钥匙串;大测试前…
讨论区核心观点
依据 6 条评论
- trap 抓不到 SIGKILL,也覆盖不了 OOM kill、内核崩溃或断电;超时包装脚本常在 TERM 无效后升级为 kill -9,所以只在结束时清理仍会泄漏,只是慢一些。 出处(新标签页打开)
- 更可靠的是在每次运行开始时清扫:用 PID 命名每次运行的临时目录(如 $BASE/run-$$),启动前遍历 run-* 目录,用 kill -0 判断对应 PID 是否还活着,不活就删除;并显式传 --user-data-dir 放在该目录内,避免 profile 落到清扫范围之外。 出处(新标签页打开)
- 发帖人认同这是真正的缺口,表示已改为按 PID 清扫死掉的运行目录,并把清扫挂到 SessionStart hook 上——会话被 kill 后它仍会执行,而会话结束时的清理钩子不会。 出处(新标签页打开)
- 另一条同类建议:清理放在运行开头而不是结尾,每个运行用独立目录(--user-data-dir=$RUN_DIR/chrome 加 TMPDIR=$RUN_DIR),下次运行前删掉超过一天的目录,这样被杀的运行只损失一个文件夹。发帖人表示已采用并加了“删除超过一天”的兜底。 出处(新标签页打开)
- 4100 万个文件的数量令人难以想象,有人表示 trap on EXIT/INT/TERM 这条建议正是自己想给测试脚本补上的。 出处(新标签页打开)
- 有人抱怨 Claude 不断往 /tmp 里塞垃圾、从不自行清理,满了还报怨。 出处(新标签页打开)