诊断服务器上被终止的进程
作者:Flavio。任务:作者:Flavio Claude Code 在我的 Ubuntu 服务器上每次启动几秒后就会退出。我让 Codex CLI 通过 SSH 连接服务器,它在内核日志中找到了 Linux OOM killer 的记录。下面是整个会话的经过。 这是一个系列的第一篇,介绍我如何在编写代码之外,利用 AI 处理经营业务中的各种事务。这一篇讲的是服务器。 我在 DigitalOcean 上运行着一台小型 Ubuntu 服务器,用来部署 Sendy。这是一款自托管的电子邮件通讯应用,我用它发送邮件。到了 2026 年 4 月,这台服务器还在运行 Ubuntu 18.04 LTS,一个非常老的版本。LTS 版本每两年发布一次,提供五年的标准安全更新,因此 18.04 当时已经停止支持一段时间了。 我在服务器上安装了 Claude Code,并用它完成升级。系统从 18.04 升到 20.04,再升到 22.04,最后升到 24.04,一步一步来,因为 Ubuntu 不支持直接跳到最新版本。整个过程非常顺利。途中一旦出现问题,智能体就能查看服务器上的错误、修复问题,并验证修复结果。 两周后,Ubuntu 26.04 LTS 发布了。于是我说:“再升级一次,这样未来两年就不用操心了。” 结果出乎意料:当时还没有从 24.04 升级到 26.04 的路径。Ubuntu 会在新版本发布几个月后,随第一个小版本更新开放升级。因此,你接下来读到的这些工作其实都白做了。不过,排查问题的方法仍然值得分享。 问题我通过 SSH 登录服务器,运行 claude。每一次,它都会在几秒后被终止,没有报错,也没有任何说明。我完全不知道原因。 所以,我没有直接在服务器上排查,而是在 Mac 上运行了一个智能体,让它连接服务器查明原因。我使用的是 Codex CLI。 授予智能体访问权限首先,我告诉 Codex 如何连接这台机器: 然后,我描述了问题: 我没有提供任何线索,因为我自己也没有。 Black Friday · 11 月 23 日开启新一期 AI Workshop,价格从 299 美元降至 99 美元我的 Black Friday 优惠将于 11 月 23 日开启。你可以用 99 美元而非 299 美元报名新一期 AI Workshop,也可以花 49 美元购买 TypeScript、React、Git 和 AHA Stack 全部四门大师课。分别订阅相应的邮件列表,即可在各项优惠开启时收到通知。 Codex 做了什么下面是略作删减的会话: 注意它做的第一件事。在进行任何操作之前,它先提出了一个假设:内核正在终止这个进程,并指出证据可能在哪里:dmesg、journalctl。然后,它去检查了。 journalctl -k 命令会读取内核日志。grep 则会筛选出 Linux 因进程占用过多内存而将其终止时出现的关键词。 结论如下: 什么是 OOM killer OOM killer(内存不足时的进程终止机制)是 Linux 内核的一部分。当系统耗尽 RAM,又没有 swap 可以使用时,内核会选择一个进程并将其终止,以维持机器运行。它往往会选择内存增长最快或占用内存最多的进程。 在我的服务器上,这个进程就是 claude,它运行时需要大约 860 MB 内存。 swap 是内核用作内存溢出缓冲的磁盘空间。它速度较慢,但能给系统留出缓冲余地,而不是让系统一到内存上限就无路可走。我的 Droplet 没有配置 swap。 解决办法问题出在内存上。两周前,同一个智能体在同一台服务器上还运行正常。此后,可能是 MySQL 的内存占用增加了,也可能是 Claude Code 的占用增加了。无论如何,2 GB 内存且没有;工具:Codex, Claude Code。人工角色:原文未说明人员如何持续参与其中。;局限:智能体需要 SSH 访问权限及读取系统日志的权限。诊断依赖于内核日志的可用性。用户缺乏 Linux 服务器技能,完全依赖智能体进行解读。建议的修复方案(如添加 swap 或升级 Droplet)需要手动执行或明确批准。。
工具
Agent Work Atlas 发布日期:
概述
作者:Flavio
工作流程
作者:Flavio Claude Code 在我的 Ubuntu 服务器上每次启动几秒后就会退出。我让 Codex CLI 通过 SSH 连接服务器,它在内核日志中找到了 Linux OOM killer 的记录。下面是整个会话的经过。 这是一个系列的第一篇,介绍我如何在编写代码之外,利用 AI 处理经营业务中的各种事务。这一篇讲的是服务器。 我在 DigitalOcean 上运行着一台小型 Ubuntu 服务器,用来部署 Sendy。这是一款自托管的电子邮件通讯应用,我用它发送邮件。到了 2026 年 4 月,这台服务器还在运行 Ubuntu 18.04 LTS,一个非常老的版本。LTS 版本每两年发布一次,提供五年的标准安全更新,因此 18.04 当时已经停止支持一段时间了。 我在服务器上安装了 Claude Code,并用它完成升级。系统从 18.04 升到 20.04,再升到 22.04,最后升到 24.04,一步一步来,因为 Ubuntu 不支持直接跳到最新版本。整个过程非常顺利。途中一旦出现问题,智能体就能查看服务器上的错误、修复问题,并验证修复结果。 两周后,Ubuntu 26.04 LTS 发布了。于是我说:“再升级一次,这样未来两年就不用操心了。” 结果出乎意料:当时还没有从 24.04 升级到 26.04 的路径。Ubuntu 会在新版本发布几个月后,随第一个小版本更新开放升级。因此,你接下来读到的这些工作其实都白做了。不过,排查问题的方法仍然值得分享。 问题我通过 SSH 登录服务器,运行 claude。每一次,它都会在几秒后被终止,没有报错,也没有任何说明。我完全不知道原因。 所以,我没有直接在服务器上排查,而是在 Mac 上运行了一个智能体,让它连接服务器查明原因。我使用的是 Codex CLI。 授予智能体访问权限首先,我告诉 Codex 如何连接这台机器: 然后,我描述了问题: 我没有提供任何线索,因为我自己也没有。 Black Friday · 11 月 23 日开启新一期 AI Workshop,价格从 299 美元降至 99 美元我的 Black Friday 优惠将于 11 月 23 日开启。你可以用 99 美元而非 299 美元报名新一期 AI Workshop,也可以花 49 美元购买 TypeScript、React、Git 和 AHA Stack 全部四门大师课。分别订阅相应的邮件列表,即可在各项优惠开启时收到通知。 Codex 做了什么下面是略作删减的会话: 注意它做的第一件事。在进行任何操作之前,它先提出了一个假设:内核正在终止这个进程,并指出证据可能在哪里:dmesg、journalctl。然后,它去检查了。 journalctl -k 命令会读取内核日志。grep 则会筛选出 Linux 因进程占用过多内存而将其终止时出现的关键词。 结论如下: 什么是 OOM killer OOM killer(内存不足时的进程终止机制)是 Linux 内核的一部分。当系统耗尽 RAM,又没有 swap 可以使用时,内核会选择一个进程并将其终止,以维持机器运行。它往往会选择内存增长最快或占用内存最多的进程。 在我的服务器上,这个进程就是 claude,它运行时需要大约 860 MB 内存。 swap 是内核用作内存溢出缓冲的磁盘空间。它速度较慢,但能给系统留出缓冲余地,而不是让系统一到内存上限就无路可走。我的 Droplet 没有配置 swap。 解决办法问题出在内存上。两周前,同一个智能体在同一台服务器上还运行正常。此后,可能是 MySQL 的内存占用增加了,也可能是 Claude Code 的占用增加了。无论如何,2 GB 内存且没有
原文报告的结果
智能体在一次排查中成功确定了根本原因(OOM 终止),且未修改生产服务器。用户指出,智能体先提出假设、再验证证据、并在更改前询问的行为模式非常适合生产环境。未报告具体的性能指标或成本节省数据。
人工角色
原文未说明人员如何持续参与其中。
局限
智能体需要 SSH 访问权限及读取系统日志的权限。诊断依赖于内核日志的可用性。用户缺乏 Linux 服务器技能,完全依赖智能体进行解读。建议的修复方案(如添加 swap 或升级 Droplet)需要手动执行或明确批准。
试一试
扮演 DevOps 助手。我有一台远程 Ubuntu 服务器 [替换:IP/主机名],上面的进程 [替换:进程名] 正在静默崩溃。使用 [替换:SSH 命令/密钥路径] 通过 SSH 连接。暂时不要修改任何内容。首先,检查系统资源(free -h)和内核日志(journalctl -k 或 dmesg),查找与 OOM killer 或该进程相关的错误。报告你的发现:1. 崩溃假设。2. 日志证据。3. 按风险排序的推荐修复方案(例如:添加 swap,升级实例)。在我确认之前,不要执行任何更改。如果日志不清晰,请要求提供特定的日志片段。
来源报告未经独立核验。发布日期为本站案例发布日期,并非原始文章日期。