在Linux中可通过lsof、netstat、ss、pidof及/proc文件系统五种方法排查端口占用:lsof列出端口与进程关联;netstat显示监听连接;ss为高性能替代工具;pidof结合lsof定位服务端口;/proc提供底层验证手段。

如果您在Linux系统中需要确认某个端口是否已被占用,或者想找出占用特定端口的进程,则可通过系统自带的命令工具快速定位。以下是几种常用且有效的排查方法:
lsof(list open files)可列出当前系统中所有打开的文件及网络连接,网络端口在Linux中被视为特殊文件,因此能直接显示端口与进程的关联关系。
1、检查指定端口(例如80端口)是否被占用:
执行命令:lsof -i :80
2、列出所有监听状态的TCP端口及其对应进程:
执行命令:lsof -iTCP -sTCP:LISTEN -n -P
3、仅显示PID、用户、命令名和端口信息,便于快速识别:
执行命令:lsof -i :80 -t -n -P
netstat是传统网络统计工具,能显示网络连接、路由表、接口统计等信息,适用于较老版本Linux或未安装lsof的环境。
1、查看所有监听中的TCP端口及对应进程:
执行命令:netstat -tuln
2、精确查找特定端口(如3306)的占用情况:
执行命令:netstat -tuln | grep :3306
3、同时显示进程名称和PID(需root权限):
执行命令:sudo netstat -tulnp
ss(socket statistics)是现代Linux中推荐使用的netstat替代工具,性能更高,输出更简洁,尤其适合高并发场景下的端口状态分析。
1、列出所有监听的TCP端口及绑定地址:
执行命令:ss -tuln
2、过滤出监听在127.0.0.1:6379的连接:
执行命令:ss -tuln | grep ':6379'
3、显示进程信息(需sudo权限):
执行命令:sudo ss -tulnp
当已知服务名称(如nginx、redis-server)但不确定其监听端口时,可先获取进程PID,再反查其打开的端口。
1、获取服务主进程PID:
执行命令:pidof nginx
2、用该PID查询其所有网络连接:
执行命令:lsof -nP -p $(pidof nginx) | grep LISTEN
3、若存在多个同名进程,可加-a参数确保完整匹配:
执行命令:lsof -i -a -p $(pidof redis-server)
/proc目录下存储了运行中进程的详细信息,其中/proc/[pid]/fd/和/proc/[pid]/net/子目录可用于低层验证端口归属,适用于调试或权限受限环境。
1、列出所有监听端口的inode编号:
执行命令:cat /proc/net/tcp | awk '{print $10}' | grep -v '00000000:0000'
2、遍历/proc/[pid]/fd/查找指向socket的符号链接:
执行命令:find /proc/[0-9]*/fd -lname "socket:[*]" 2>/dev/null | head -5
3、根据找到的PID读取对应进程命令行:
执行命令:cat /proc/[PID]/cmdline 2>/dev/null | tr '\0' ' '
以上就是LINUX怎么查看端口占用情况_Linux lsof与netstat命令使用方法【实用技巧】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号