CentOS查看端口占用的具体教程

[复制链接]
发表于 2026-10-6 12:19:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

CentOS 上查端口占用是个基础但高频的动作:服务起不来怀疑端口被占、改配置前想确认哪个进程在监听、杀进程之前要搞清是谁占的。这篇把三件最常顺手用的工具按用法拆开,最后说清怎么定位到进程并停掉它。

一、什么场景需要查端口占用

三种典型:新服务启动报端口已被使用;防火墙看着放通了但外部连不上,怀疑服务根本没监听;想重启某个服务但不知道它在哪个进程手上。这三种场景的排查入口其实都是同一件事——先看谁在占用这个端口。

二、netstat:最经典的一套

看全部端口:

netstat -tunlp

这四个参数各有分工:-t 只看 TCP;-u 只看 UDP;-n 直接显示数字形式的地址和端口,不做域名和服务名解析,快;-l 只列处于监听状态的。组合起来就是一眼看全机在听哪些口。

看指定端口,比如 80:

netstat -tunlp | grep 80

能直接看到占用进程号和进程名。

三、lsof:按端口反查进程

lsof 的本意是列打开的文件,在 Linux 里网络连接也算文件,所以它能按端口反查进程,信息比 netstat 更全:

lsof -i :端口号
lsof -i :80

输出里能看到进程号、属主、进程名。拿到进程号之后,想知道这个进程到底是哪个可执行文件:

ps -p 进程号 -o comm=

把进程号换成上一步查到的数字即可。这条组合在做根因判断时特别有用——有时候端口被占的并不是你以为的那个服务。

四、ss:更现代的替代品

ss 是 netstat 的接替者,读取内核(sock 层)信息更快,参数也基本一致:

ss -tuln

-t、-u、-l、-n 的含义和 netstat 相同。看指定端口:

ss -tuln | grep 80

五、找到进程之后怎么停

确认占用进程的身份之后再动手,别直接杀。停有两种方式:比较温和的让服务自己停,比如走它自己的停止命令;或者直接用 kill 发信号:

kill -9 进程号

-9 是强制立即终止,用在服务自己停不掉的场景。生产环境建议先确认这个进程停掉之后有没有别的依赖,尤其是它上面还挂着业务的时候。

六、三件工具怎么选

  • 想快速看一眼全机器在听什么:ss -tuln,输出干净、速度快。
  • 想按端口查到完整进程信息:lsof -i :端口,信息最全。
  • 老系统或者文档里给的命令:netstat -tunlp,兼容性最好。
  • 三个都不在的话先装:ss 来自 iproute,lsof 和 netstat 多数系统自带。

七、小结

排查顺序固定下来其实很简单:先 ss 或 netstat 找到谁在监听,再 lsof 拿进程号,ps 确认进程名,确认没有业务依赖后才 kill。真正容易出错的不是命令,而是没搞清楚就杀进程——线上一次误杀,比多敲两分钟命令的代价大得多。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表