当遇到端口被占用时,可通过 netstat 或 ss 查找进程。1. 使用 netstat -tulnp | grep :端口号,参数分别表示tcp/udp、监听状态、不解析服务名、显示进程信息;2. 使用 ss -tulnp | grep :端口号,功能类似且效率更高;3. 找到进程后可确认是否为正常服务、停止无关进程、修改配置更换端口或排查异常行为,操作前需谨慎确认进程用途。

你有没有遇到过启动服务时提示端口被占用的情况?这时候最直接的需求就是查清楚是哪个进程占用了端口。在Linux系统中,netstat 和 ss 是两个常用的命令行工具,可以用来查看网络连接、路由表、接口统计等信息,也包括查找占用特定端口的进程。

使用 netstat 查看端口占用情况
netstat(network statistics)是一个功能强大的网络统计工具,可以显示各种网络连接状态。虽然现在很多系统推荐使用 ss 命令替代它,但 netstat 依然广泛使用,特别是在一些老版本的系统中。

常用命令格式如下:
netstat -tulnp | grep :端口号
解释一下各个参数:

-t:显示TCP连接-u:显示UDP连接-l:只显示监听状态(LISTEN)的连接-n:不解析服务名称,直接显示端口号-p:显示进程ID和名称(需要root权限)
例如,你想查看80端口被谁占用了,可以执行:
netstat -tulnp | grep :80
输出结果中会包含协议、本地地址、外部地址、状态以及PID/进程名等信息。如果看不到进程信息,可能是权限不够,尝试加上 sudo。
注意:某些系统默认没有安装 netstat,你可以通过安装 net-tools 包来获取它。
使用 ss 快速查找端口进程
ss(socket statistics)是 netstat 的现代替代品,速度更快、资源消耗更少,而且语法更简洁。如果你用的是较新的Linux发行版,建议优先使用 ss。
SpeakingPass-打造你的专属雅思口语语料
使用chatGPT帮你快速备考雅思口语,提升分数
25 查看详情
基本命令格式:
ss -tulnp | grep :端口号
参数含义与 netstat 类似:
-t:TCP连接-u:UDP连接-l:列出监听中的连接-n:不解析服务名-p:显示关联的进程信息(同样需要root权限)
比如要查看3306端口是否被占用:
ss -tulnp | grep :3306
输出内容和 netstat 差不多,也会显示进程名和PID,方便你定位问题。
如何处理找到的进程?
一旦你找到了占用端口的进程,下一步就是决定怎么处理它。常见做法有以下几种:
确认是否为正常运行的服务
比如MySQL默认使用3306端口,Nginx用80或443,这些属于正常情况。
停止无关进程释放端口
如果这个进程不是必须的,可以通过 kill 或 kill -9 来结束它。例如:
sudo kill -9 PID
修改配置更换端口
如果不想杀掉进程,也可以修改你的应用配置,换一个未被占用的端口。
排查异常行为
如果发现不明进程占用了常见端口,可能要考虑是否有安全风险,需要进一步排查。
当然,在操作前记得确认进程用途,避免误杀关键服务。
基本上就这些。无论是用 netstat 还是 ss,目的都是快速定位端口占用情况,从而做出相应处理。这两个命令都很实用,掌握它们能帮你节省不少排查时间。
以上就是Linux如何查找占用端口的进程 netstat和ss命令解析的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/476289.html
微信扫一扫
支付宝扫一扫