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

本文介绍了如何使用lsof和netstat命令来查看特定端口的占用情况及其对应的进程信息,包括IPv4和IPv6两种协议,并展示了如何进一步获取这些进程的详细配置。
方法一
1.通过lsof命令查看PID
[u]ipv4[/u]
# 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)
也可以使用:
# lsof -Pnl +M -i4|grep 8453
java 1419 1401 10u IPv4 6793357 TCP *:8453 (LISTEN)

[u]ipv6[/u]
# 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)
也可以使用:
# lsof -Pnl +M -i6|grep 5001
java 12886 0 530u IPv6 6988341 TCP *:5001 (LISTEN)
2.通过ps命令查看进程情况
# 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
# netstat -anp|grep 5001
tcp 0 0 :::5001 :::* LISTEN 12886/java
2.使用ps查看进程情况
# 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] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值