要排查linux系统中端口被哪个进程占用,可使用 netstat 或 ss 命令。1. 使用 netstat 时,执行 sudo netstat -tulnp 可查看所有监听状态的 tcp/udp 端口及对应进程信息,若需查找特定端口(如3000),则附加管道 grep :3000;2. 使用 ss 命令更高效,执行 sudo ss -tulnp 同样显示端口与进程信息,且支持更灵活过滤,如 ss -lntup 'sport = :80';3. 若未安装 netstat,可通过包管理器安装 net-tools;4. 若无法看到进程名,可能是权限不足或进程已退出,可结合 ps -p pid 查看进程详情。两者各有优势,熟悉后能快速定位端口占用问题。

Linux系统中,如果需要排查某个端口被哪个进程占用,通常会用到 netstat 和 ss 这两个命令。虽然它们功能类似,但各有特点,在不同场景下使用更合适。下面直接进入正题,看看怎么用这两个工具查端口占用。

netstat 是一个老牌的网络统计工具,可以显示各种网络连接、路由表、接口统计等信息。查看端口对应的进程,主要靠 -tulnp 几个参数组合:

sudo netstat -tulnp
-t 表示 TCP 协议-u 表示 UDP 协议-l 显示监听状态的连接-n 不解析服务名称(加快显示速度)-p 显示进程 ID 和名称(需要 root 权限)输出结果中你会看到类似这样的内容:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 0 :::80 :::* LISTEN 1234/nginx
其中最后一列就是进程号和程序名。

注意点:
PID/Program name,所以最好加 sudo
| grep :80
ss(Socket Statistics)是新一代的网络工具,功能更强大,执行速度也更快,尤其在连接数多的时候表现更好。
基本命令如下:
sudo ss -tulnp
参数含义与 netstat 类似,输出格式也差不多:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=1234,fd=6))这里可以看到进程名、PID 和文件描述符信息。
优势体现:
ss -lntup 'sport = :80' 只看 80 端口的监听情况有时候你可能只知道端口号,想快速找到是哪个进程占用了它。可以用下面这些方法:
以查找端口 3000 为例:
sudo netstat -tulnp | grep :3000
sudo ss -lntup | grep :3000
如果你不确定是 TCP 还是 UDP,可以把 -t 或 -u 参数去掉。
tcp LISTEN 0 10 *:3000 *:* users:(("node",pid=5678,fd=20))这时你就知道是 PID 为 5678 的 node 进程占用了这个端口。
没有安装 netstat?
在一些新版 Linux 系统上,默认不装 net-tools 包,你可以通过包管理器安装:
sudo apt install net-tools # Debian/Ubuntu sudo yum install net-tools # CentOS
找不到进程名?
可能是没有权限,或者进程已经退出了。尝试用 ps 命令结合 PID 查看更多信息:
ps -p 1234
端口被占用但没运行服务?
有可能是之前的服务异常退出,导致端口还没释放。可以等几分钟再试,或修改服务配置换端口。
基本上就这些常用操作了。netstat 和 ss 都很实用,熟悉之后查端口占用不再是难题。
以上就是如何查找Linux进程占用端口 netstat和ss命令实践指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号