linux下查看监听端口对应的进程

本文介绍如何使用lsof和netstat命令查询特定端口所对应的进程PID,并结合ps命令展示进程详细信息。
方法一 
1.通过lsof命令查看PID 
ipv4 
[root@test proc]# lsof -Pnl +M -i4          
COMMAND     PID     USER   FD   TYPE  DEVICE SIZE NODE NAME 
java       1419     1401   10u  IPv4 6793357       TCP *:8453 (LISTEN) 
AutonomyD  6147     1401    6u  IPv4 7597365       TCP *:20003 (LISTEN) 
AutonomyD  6147     1401   14u  IPv4 7597369       TCP *:20000 (LISTEN) 
也可以使用: 
[root@test proc]# lsof -Pnl +M -i4|grep 8453 
java       1419     1401   10u  IPv4 6793357       TCP *:8453 (LISTEN) 

ipv6 
[root@test proc]# lsof -Pnl +M -i6 
COMMAND     PID     USER   FD   TYPE  DEVICE SIZE NODE NAME 
java       1419     1401  286u  IPv6 7616547       TCP 192.168.1.29:55829->192.168.1.17:7001 (CLOSE_WAIT)
java       1419     1401  290u  IPv6 6987470       TCP 192.168.1.29:33836->192.168.1.154:1521 (ESTABLISHED) 
java       1419     1401  297u  IPv6 6793642       UDP *:1133 
java       1419     1401  304u  IPv6 6987472       TCP 192.168.1.29:33838->192.168.1.154:1521 (ESTABLISHED) 
java       1419     1401  306u  IPv6 6987479       TCP 192.168.1.29:33839->192.168.1.154:1521 (ESTABLISHED) 
java       1419     1401  307u  IPv6 7006208       TCP 192.168.1.29:60340->192.168.1.154:1521 (ESTABLISHED) 
也可以使用: 
[root@test proc]# lsof -Pnl +M -i6|grep 5001 
java      12886        0  530u  IPv6 6988341       TCP *:5001 (LISTEN) 
2.通过ps命令查看进程情况 
[root@test proc]# ps -ef|grep 12886 
root     12886 12851  0 Dec09 ?        00:00:43 /home/bjca/bea/jdk160_05/bin/java -client -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=48m -XX:MaxPermSize=128m -Xverify:none -da -Dplatform.home=/home/bjca/bea/wlserver_10.3 -Dwls.home=/home/bjca/bea/wlserver_10.3/server -Dweblogic.home=/home/bjca/bea/wlserver_10.3/server -Dweblogic.management.discover=true -Dwlw.iterativeDev= -Dwlw.testConsole= -Dwlw.logErrorsToConsole= -Dweblogic.ext.dirs=/home/bjca/bea/patch_wlw1030/profiles/default/sysext_manifest_classpath:/home/bjca/bea/patch_wls1030/profiles/default/sysext_manifest_classpath:/home/bjca/bea/patch_cie660/profiles/default/sysext_manifest_classpath -Dweblogic.Name=AdminServer -Djava.security.policy=/home/bjca/bea/wlserver_10.3/server/lib/weblogic.policy weblogic.Server 

3.lsof命令参数解释 
  1) -P :这个选项约束着网络文件的端口号到端口名称的转换。约束转换可以使lsof运行得更快一些。在端口名称的查找不能奏效时,这是很有用的。 
  2) -n : 这个选项约束着网络文件的端口号到主机名称的转换。约束转换可以使lsof的运行更快一些。在主机名称的查找不能奏效时,它非常有用。 
  3) -l :这个选项约束着用户ID号到登录名的转换。在登录名的查找不正确或很慢时,这个选项就很有用。 
  4) +M :此选项支持本地TCP和UDP端口映射程序的注册报告。 
  5) -i4 :仅列示IPv4协议下的端口。 
  6) -i6 : 仅列示IPv6协议下的端口。 
方法二 
1.使用netstat查看进程PID 
[root@test ~]#  netstat -anp|grep 5001 
tcp        0      0 :::5001                     :::*                        LISTEN      12886/java          
2.使用ps查看进程情况 
[root@test 12886]# ps -ef|grep 12886 
root     12886 12851  0 Dec09 ?        00:01:14 /home/bjca/bea/jdk160_05/bin/java -client -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=48m -XX:MaxPermSize=128m -Xverify:none -da -Dplatform.home=/home/bjca/bea/wlserver_10.3 -Dwls.home=/home/bjca/bea/wlserver_10.3/server -Dweblogic.home=/home/bjca/bea/wlserver_10.3/server -Dweblogic.management.discover=true -Dwlw.iterativeDev= -Dwlw.testConsole= -Dwlw.logErrorsToConsole= -Dweblogic.ext.dirs=/home/bjca/bea/patch_wlw1030/profiles/default/sysext_manifest_classpath:/home/bjca/bea/patch_wls1030/profiles/default/sysext_manifest_classpath:/home/bjca/bea/patch_cie660/profiles/default/sysext_manifest_classpath -Dweblogic.Name=AdminServer -Djava.security.policy=/home/bjca/bea/wlserver_10.3/server/lib/weblogic.policy weblogic.Server 
root     27592 27546  0 09:11 pts/2    00:00:00 grep 12886 
<think> 我们正在讨论如何查看Linux系统中的所有监听端口。参考了之前的引用内容,其中提到了使用`netstat`和`lsof`命令,以及防火墙相关命令(但防火墙命令主要用于管理端口而非查看监听端口#,所以主要关注查看方法#。 根据引用#[1]和[2],重点强调查看监听端口方法#,以下整理三种常用方法: 1. **使用 `netstat` 命令** `netstat` 是经典工具#,能显示网络连接#、路由表#、接口统计等信息。查看监听端口命令: `netstat -tuln` 参数说明: `-t`:TCP端口 `-u`:UDP端口 `-l`:仅显示监听套接字 `-n`:以数字形式显示地址和端口号(而非服务名) **完整命令**: `sudo netstat -tuln | grep LISTEN` 注意:部分系统需root权限才能查看所有进程端口 2. **使用 `lsof` 命令** `lsof`(List Open Files)可列出被进程打开的文件(含网络套接字)。 命令格式: `sudo lsof -i -P -n | grep LISTEN` 参数解释: `-i`:列出网络连接 `-P`:禁止端口到服务名的转换(纯数字显示) `-n`:禁止主机名解析(显示IP) `grep LISTEN`:过滤出监听状态端口 3. **使用 `ss` 命令(推荐)** `ss`(Socket Statistics)是`netstat`的现代替代品#,速度更快且信息更详细#。 命令:`sudo ss -tuln` 参数说明: `-t`:TCP端口 `-u`:UDP端口 `-l`:仅监听端口 `-n`:数字格式显示 </think> 在 Linux 系统中查看所有监听端口,可以通过以下几种常用方法实现(需注意部分命令需要 root 权限): --- ### **1. 使用 `netstat` 命令(经典工具)** ```bash sudo netstat -tuln | grep LISTEN ``` - **参数说明**: - `-t`:显示 TCP 端口 - `-u`:显示 UDP 端口 - `-l`:仅显示监听状态的端口 - `-n`:以数字形式显示地址和端口号(不解析服务名称) - 示例输出: ```bash Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 :::80 :::* LISTEN ``` - **注**:部分系统需 `sudo` 权限才能查看所有进程端口。 --- ### **2. 使用 `lsof` 命令查看进程关联)** ```bash sudo lsof -i -P -n | grep LISTEN ``` - **参数说明**: - `-i`:列出网络连接 - `-P`:禁止端口到服务名的转换(显示数字端口) - `-n`:禁止主机名解析(显示 IP 地址) - **输出示例**: ```bash COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1234 root 3u IPv4 23456 0t0 TCP *:22 (LISTEN) nginx 5678 www 6u IPv6 78901 0t0 TCP *:80 (LISTEN) ``` --- ### **3. 使用 `ss` 命令(推荐,更高效)** ```bash sudo ss -tuln ``` - **参数说明**: - `-t`:TCP 端口 - `-u`:UDP 端口 - `-l`:仅显示监听端口 - `-n`:数字格式显示(不解析服务名) - **输出示例**: ```bash Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* tcp LISTEN 0 128 [::]:80 [::]:* ``` --- ### **4. 查看防火墙开放端口(额外参考)** 若需确认防火墙是否放行端口(非监听状态),可参考引用[3]: ```bash sudo firewall-cmd --list-ports # 查看永久开放的端口 sudo firewall-cmd --list-all # 查看详细规则 ``` --- ### **注意事项** 1. **权限问题**:普通用户可能无法查看系统进程端口,建议使用 `sudo` 2. **端口与服务对应**: - 查看 `/etc/services` 文件可获知端口默认服务名 - 示例:`grep 80 /etc/services` 显示 `http` 服务 3. **监听范围**: - `0.0.0.0` 表示监听所有 IPv4 地址 - `::` 表示监听所有 IPv6 地址 > **引用说明**: > - 方法 1 引用自 `netstat` 监听端口检测[^1] > - `ss` 命令作为 `netstat` 的现代替代方案,速度更快且信息更详细[^2] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值