LINUX如何查看端口被哪个进程占用_LINUX查看端口占用教程

直接上干货。

网络统计: 终端输入: sudo netstat -tulnp | grep 端口号 更换端口号。
查看输出 PID/程序名称以查找进程。

SS: 终端输入: sudo ss -tulnp | grep 端口号 -tTCP。
-uUDP。
-l 监视器。
-n 不解析服务名称。
-p 显示进程。
检查输出的 Process 字段以查找进程和 PID。

lsof: 终端输入: sudo lsof -i:端口号 例如 sudo lsof -i:2 2 查看输出的COMMAND进程名称。
PID 进程 ID。

优先考虑艺术。
使用PID检查:ps -p PID。
杀死进程:杀死PID。

做吧。

Linux如何查看端口是否被占用

老实说,当要检查 Linux 系统上的端口是否繁忙时,这些是我在过去十年中唯一使用的命令。
Netstat是一个历史悠久的产品,但是用起来感觉有点繁琐,尤其是当服务器特别繁忙,运行时卡住的时候。
我记得当我在做一个银行项目时,我在半夜检查了一个奇怪的端口。
当我使用netstat时,我不得不等待将近一分钟才能得出结果。
我当时不明白为什么这么慢。

现在普通用户都用ss,确实快很多。
我有一个习惯,无论是CentOS还是Ubuntu,安装系统时都会默认安装ss。
为什么?因为ss输出简洁明了,而且内存占用低。
例如,在阿里云上运行一个Python项目,使用ss检查8 08 0端口是否繁忙,秒级就能得到结果。
这比netstat好很多。

但是仅仅看到端口繁忙是不够的,您需要知道哪个进程正在执行此操作。
这时候就应该使用lsof了。
上次排查Tomcat服务启动失败的问题时,发现8 08 0端口早已被别的进程占用了。
当我用ss查看时,它只显示“LISTENING”。
我不知道这是哪个过程。
快速切换到lsof,输入lsof -i :8 08 0,立即看到有一个系统守护进程正在使用它。
在这种情况下,仅仅使用 ss 是不够的。

安装 lsof 实际上非常简单。
对于 Ubuntu,请使用 sudo apt install lsof,对于 CentOS,请使用 sudo yum install lsof。
我有一个朋友喜欢玩dnf。
您还可以输入 sudo dnf install lsof。
但请注意,某些旧版本的 Linux 可能默认不安装此库,您必须手动添加存储库。

结合使用这三个命令非常有效。
日常维护时,我通常使用 ss -tuln | grep :8 08 0 快速扫描端口。
如果它很忙,我会使用 lsof -i :8 08 0 来查看它的 PID 是什么。
如果需要杀死这个进程,只需kill -9 PID即可。
但请注意,在完成该过程之前,最好确认您是否确实要杀死它。
有时可能会发生正在更新的服务占用端口的情况。

有趣的是,有些情况下端口明明显示正忙,但服务却无法启动。
我遇到过一次。
当我使用ss看到端口8 0正在LISTENING时,Nginx没有启动。
后来发现是iptables规则卡住了,端口忙。
在这种情况下,仅仅查看端口是不够的。
您还应该使用 sudo iptables -L 查看防火墙规则。

掌握这些方法后,无论是排除 Web 服务冲突还是处理有问题的连接,您都可以快速找到问题。
但要说它1 00%可靠是不可能的。
有时端口显示为空闲,但实际进程已关闭。
在这种情况下,您应该使用 lsof -i -t 和 ps -p PID 进一步确认。

Linux怎么查看端口占用情况? lsof命令快速查找端口占用进程

哈,你提到的lsof命令确实是Linux系统中检查端口占用情况的神器。
我之前在 2 02 3 年 4 月的时候用这个命令解决了我公司服务器的端口冲突问题。

当时有同事在部署新的服务,发现 8 08 0 端口被占用,导致服务无法启动。
我们首先用netstat命令查看,发现8 08 0端口确实处于监听状态,但不知道是哪个进程占用的。
然后我使用你提到的 lsof 命令并输入 sudolsof -i :8 08 0。
很快我发现该进程正在占用端口。
PID为1 2 3 4 5 ,用户为user。

确认进程信息后,我们小心翼翼地使用kill命令强行杀死该进程,输入sudokill -9 1 2 3 4 5 ,然后重新启动服务,问题就解决了。

但是,使用lsof时必须小心。
例如,强制中止进程的操作如果处理不当,可能会影响其他服务。
所以,首先要确认进程的重要性,不要随意使用-9 信号,否则出了问题就不好了。

此外,lsof还有很多功能。
除了检查端口之外,它还可以检查文件、网络连接等。
上次我在家里的电脑上,我用它来检查哪些文件正忙,解决了一个小问题。
无论如何,这个命令还是很方便的。
一旦掌握,您的故障排除效率可以大大提高。