在Linux系统中,查看进程与端口的对应关系是系统管理和网络排查中的常见需求,通过分析进程占用的端口,可以快速定位服务异常、端口冲突或安全威胁等问题,本文将详细介绍多种查看进程端口号的方法,涵盖基础命令、进阶技巧及实际应用场景,帮助读者全面掌握这一技能。

使用netstat命令查看进程端口
netstat是传统的网络工具,用于显示网络连接、路由表、接口统计等信息,通过特定参数可以快速定位进程与端口的映射关系。
基本语法与常用参数
netstat [选项] [协议]
-t:显示TCP连接-u:显示UDP连接-n:以数字形式显示地址和端口,避免DNS解析,提高速度-l:仅显示监听端口-p:显示进程ID(PID)和进程名称(需root权限)
实用示例
-
查看所有监听端口对应的进程
sudo netstat -tulnp
输出结果中,
Local Address列显示端口和IP,PID/Program name列直接关联进程信息,tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd表示SSH服务(sshd进程)在22端口监听。
-
查看指定端口的进程
sudo netstat -tulnp | grep :80
此命令可快速定位80端口(HTTP服务)的占用进程。
-
查看TCP/UDP连接详情
netstat -anp | grep ESTABLISHED # 查看已建立的TCP连接 netstat -unp # 查看UDP连接及进程
使用ss命令替代netstat
ss是netstat的替代工具,在Linux新版本中默认安装,其查询速度更快,功能更强大,尤其在处理大量网络连接时优势明显。
基本语法与常用参数
ss [选项] [过滤条件]
-t:TCP连接-u:UDP连接-l:仅显示监听端口-n:数字形式显示-p:显示进程信息-a:显示所有连接(包括监听和非监听)
实用示例
-
查看所有监听端口及进程

sudo ss -tulnp
输出格式与
netstat类似,但效率更高,TCP LISTEN 0 511 0.0.0.0:3306 0.0.0.0:* users:(("mysqld",pid=5678,fd=11))表示MySQL服务(mysqld进程)监听3306端口。
-
按端口过滤
sudo ss -tulnp | grep ':443'
-
查看进程的网络连接
sudo ss -tulnp | grep 'PID=1234' # 查看PID为1234的进程所有连接
使用lsof命令查看进程端口
lsof(List Open Files)用于列出系统打开的文件,在Linux中,一切皆文件,网络连接也被视为文件,因此可通过lsof精准定位进程与端口的关系。
基本语法
lsof [选项] [文件/目录/端口]
-i:显示网络连接-P:不解析端口号为服务名称-n:不解析主机名(与-i配合使用)-t:仅输出进程ID(适合脚本调用)
实用示例
-
查看指定端口占用的进程
sudo lsof -i :8080
输出结果会显示进程名称、PID、用户及连接状态,
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 901 tomcat 0u IPv6 12345 0t0 TCP *:8080 (LISTEN) -
查看进程的所有网络连接
sudo lsof -i -P -n | grep 'PID=901'
-
杀死占用端口的进程

sudo kill -9 $(lsof -t -i :8080) # 先获取PID,再强制终止
结合ps与grep精准定位
当需要结合进程状态(如CPU、内存占用)分析端口问题时,可联合使用ps(查看进程)和grep(过滤信息)。
查看所有进程的端口占用情况
sudo ps aux | grep -v grep | grep -E 'LISTEN|:80'
ps aux:显示所有进程的详细信息grep -v grep:过滤掉grep命令自身的进程grep -E 'LISTEN|:80':匹配包含“LISTEN”状态或80端口的进程
通过PID反向查找端口
若已知进程PID,可通过/proc文件系统查询其端口信息:
sudo cat /proc/1234/net/tcp # 查看TCP连接(十六进制端口需转换)
端口001F(十六进制)转换为十进制为31,对应端口31。
实际应用场景
排查端口冲突
当启动服务时提示“端口被占用”,可通过以下步骤定位:
sudo ss -tulnp | grep :端口号 # 查看占用端口的进程 sudo kill -9 PID # 终止进程(谨慎操作)
分析异常网络连接
若发现服务器存在异常连接,可通过lsof -i查看进程来源,判断是否为恶意程序:
sudo lsof -i | grep ESTABLISHED | grep 'IP地址'
监控关键服务端口
编写定时任务,定期检查关键服务(如HTTP、MySQL)端口是否正常监听:
#!/bin/bash
if ! ss -tulnp | grep -q ':3306'; then
echo "MySQL服务端口异常" | mail -s "端口告警" admin@example.com
fi
注意事项
- 权限问题:查看其他进程的端口信息需要root权限,否则
-p参数可能不显示进程名。 - 端口范围:Linux端口分为知名端口(0-1023)、注册端口(1024-49151)和动态端口(49152-65535),需根据场景关注重点端口。
- IPv4与IPv6:部分命令需额外过滤
IPv6(如grep IPv6),避免混淆。
通过以上方法,可灵活应对不同场景下的进程端口查询需求,提升系统管理效率,掌握这些工具不仅能快速定位问题,还能为网络调试和安全排查提供有力支持。



















