linux如何查看端口被哪个进程占用

本文介绍了两种在Linux中查看端口占用情况的方法:使用lsof-i命令和netstat-tunlp|grep命令。这两种方法可以帮助您快速找到占用特定端口的进程。

本文介绍linux如何查看端口被哪个进程占用的方法:

1、lsof -i:端口号

2、netstat -tunlp|grep 端口号

都可以查看指定端口被哪个进程占用的情况

【步骤一】lsof -i

lsof -i 用以显示符合条件的进程情况,lsof(list open files)是一个列出当前系统打开文件的工具。以root用户来执行lsof -i命令,如下图

【步骤二】lsof -i:端口号

lsof -i:端口号,用于查看某一端口的占用情况,比如查看22号端口使用情况,lsof -i:22,如下图

【步骤三】netstat -tunlp

netstat -tunlp用于显示tcp,udp的端口和进程等相关情况,如下图

【步骤四】netstat -tunlp|grep 端口号

netstat -tunlp|grep 端口号,用于查看指定端口号的进程情况,如查看22端口的情况,netstat -tunlp|grep 22,如下图

linux如何查看端口被哪个进程占用

Linux 系统中,查看某个端口哪个进程占用是一个常见的系统管理任务。可以通过多种命令行工具来实现,下面详细介绍最常用的方法。 --- ### ✅ 方法一:使用 `netstat`(传统方式) ```bash sudo netstat -tulnp | grep :端口号 ``` #### 示例: ```bash sudo netstat -tulnp | grep :80 ``` #### 参数说明: - `-t`:显示 TCP 连接 - `-u`:显示 UDP 连接 - `-l`:仅显示监听状态的端口(LISTEN) - `-n`:以数字形式显示地址和端口(不解析主机名、服务名) - `-p`:显示占用端口进程 PID 和名称(需要 root 权限才能看到其他用户的进程) #### 输出示例: ``` tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx ``` > 表示 PID 为 `1234` 的 `nginx` 进程正在监听 80 端口。 > ⚠️ 注意:`netstat` 属于 `net-tools` 包,在现代发行版中可能未预装。建议使用 `ss` 替代。 --- ### ✅ 方法二:使用 `ss`(推荐,更高效) `ss` 是 `netstat` 的现代替代品,速度更快,功能更强。 ```bash sudo ss -tulnp | grep :端口号 ``` #### 示例: ```bash sudo ss -tulnp | grep :22 ``` #### 参数说明: - `-t`:TCP - `-u`:UDP - `-l`:监听中的端口 - `-n`:数字格式 - `-p`:显示进程信息 #### 输出示例: ``` tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=567,fd=3)) ``` ✅ 推荐优先使用 `ss`,它是当前主流 Linux 发行版的标准工具。 --- ### ✅ 方法三:使用 `lsof`(功能强大) ```bash sudo lsof -i :端口号 ``` #### 示例: ```bash sudo lsof -i :8080 ``` #### 输出示例: ``` COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 12345 user 20u IPv6 123456 0t0 TCP *:8080 (LISTEN) ``` > 表示 PID 为 `12345` 的 `node` 进程正在监听 8080 端口。 #### 优点: - 可以查 TCP/UDP、IPv4/IPv6 - 显示用户、协议、连接状态等详细信息 - 支持更多过滤条件(如用户、协议类型等) --- ### ✅ 方法四:通过 `/proc` 文件系统直接查找(底层方法) 如果你知道端口号(比如 `8080`),可以手动查找: ```bash # 先转换端口为十六进制(注意是小端序) printf "%04x\n" 8080 # 输出:1f90 # 搜索所有进程中打开的 socket grep -r "00000000:1F90" /proc/*/tcp /proc/*/tcp6 ``` 输出类似: ``` /proc/12345/tcp:0: 00000000:1F90 00000000:0000 0A 00000000:00000000 ... ``` 然后查看进程信息: ```bash ps -p 12345 -o pid,ppid,user,cmd ``` > 虽然繁琐,但适用于极简环境(无 netstat/ss/lsof)。 --- ### 🔍 实用技巧汇总 | 目标 | 命令 | |------|------| | 查看所有监听端口及对应进程 | `sudo ss -tulnp` | | 查看特定端口(如 3306) | `sudo ss -tulnp \| grep :3306` | | 查看哪个进程占用(带名称) | `sudo lsof -i :3306` | | 终止占用端口进程 | `sudo kill $(lsof -t -i:3306)` | | 查看进程打开的所有端口 | `sudo lsof -p 1234` | --- ### ❗注意事项 1. **需要管理员权限** 使用 `sudo` 否则无法看到所有进程的信息。 2. **端口可能属于内核模块** 如 `AF_UNIX` 或某些内核网络功能,不会关联到用户进程。 3. **容器环境需进入对应命名空间** Docker/Kubernetes 中的端口映射需结合 `docker ps` 或 `kubectl` 判断。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值