SRE命令行兵器谱之二:lsof - 解密“端口被占用”与“文件句柄泄漏”的终极侦探
SRE命令行兵器谱之二:lsof - 解密“端口被占用”与“文件句柄泄漏”的终极侦探
SRE的“战场”:真实故障场景
凌晨1点,你被一阵急促的告警声惊醒。新版本的核心应用A在生产环境发布失败,CI/CD平台挂着一个刺眼的红色“Failed”,日志的最后一行赫然写着:java.net.BindException: Address already in use
。
这是一个SRE职业生涯中必定会遇到的经典场景。它的含义非常明确:新应用想监听8080端口,但这个端口已经被另一个进程占用了。
你的任务很简单,也很有挑战性:在最短的时间内,找出这个“占着茅坑”的进程,并判断是该“请”它离开,还是通知相关人员处理。
lsof
就是你完成这个任务最精准、最可靠的工具。
lsof
输出的深度解剖与SRE思维
lsof
的全称是 “List Open Files”(列出打开的文件)。在Linux“一切皆文件”的哲学里,网络端口、硬件设备、进程间通信的管道等,都被视为文件。因此,lsof
的能力远不止于看文件。
让我们直接进入战场,执行核心侦查命令:
lsof -i :8080
你可能会看到类似这样的输出:
COMMAND PID USER FD