用 ss 命令查端口占用:三招定位抢端口的进程
部署服务时,最让人头疼的报错之一就是端口被占用。服务起不来,日志里只说地址已被使用,到底是谁占了端口?用 ss 命令,三招就能定位。
第一招,先看监听清单。执行 ss 命令加上监听参数,就能列出本机所有正在监听的端口和对应的进程。输出里每一行包含协议、监听地址、端口号和进程信息,一眼就能看到目标端口有没有被占,以及占用者是谁。如果目标端口已经在列表里,就不用再猜了,直接记下进程编号。
第二招,按端口精确过滤。端口很多时,逐行翻找太慢,可以在 ss 命令后面加上端口过滤条件,只显示目标端口的连接和监听状态。这样输出只有一两行,结果非常直观。顺带看一眼连接状态,能区分是监听中还是已有连接在占用。
第三招,顺藤摸瓜找到进程。知道了占用端口的进程编号,再用进程查看命令按编号查询,就能看到完整的启动命令和所属用户。很多时候占用者是之前没退干净的旧进程,或者是误启动的测试服务,确认无用后就可以安全地结束它,释放端口。
日常使用还有几个小习惯。先查再启动,部署前花十秒看一眼端口清单,能省下半小时排障时间。记录常用端口,团队内部约定好各服务的端口范围,避免撞车。结束进程前先确认,先看进程的启动命令和归属,确认不是关键服务再动手,免得误杀生产进程。
端口冲突看着吓人,本质上就是一张占用清单。掌握 ss 命令的监听查看、按端口过滤和进程追踪这三招,下次再遇到服务起不来,就能在一分钟内找到占用者,把端口抢回来。
顺手记一份检查清单,留着下次照着做:先列出监听端口,找到目标端口的占用进程编号,再看进程的启动命令确认身份,最后决定结束还是保留。清单贴在手边,排障就不用从头想步骤。养成先查后动的习惯,端口冲突就从拦路虎变成几分钟就能解决的小事,多查几次,这套流程自然就熟了。
- 点赞
- 收藏
- 关注作者
评论(0)