菜鸟科技网

adb 如何查看端口占用与进程信息?

在Android开发和系统调试过程中,adb(Android Debug Bridge)作为核心工具,提供了丰富的命令来管理设备、调试应用及监控系统状态,查看端口占用情况是排查网络问题、服务冲突或调试应用通信的关键操作,本文将详细解析adb查看端口的相关命令,包括基础用法、进阶技巧及实际应用场景,并辅以表格对比不同命令的适用场景,最后通过FAQs解答常见疑问。

adb 如何查看端口占用与进程信息?-图1
(图片来源网络,侵删)

adb查看端口的基础命令

adb查看端口的核心命令主要围绕netstatss展开,这两个命令均用于显示网络连接、路由表和接口统计信息,但输出格式和功能细节存在差异,在使用前,需确保设备已开启USB调试模式,且adb已正确连接设备(可通过adb devices确认连接状态)。

使用netstat查看端口

netstat是传统的网络状态查看工具,在Android设备上(基于Linux内核)同样适用,其基础语法为:

adb shell netstat [选项]

常用选项及功能如下:

  • -t:显示TCP连接
  • -u:显示UDP连接
  • -n:以数字形式显示地址和端口,避免域名解析(提升速度)
  • -l:仅显示监听端口
  • -p:显示进程ID(PID)和进程名(需root权限)

示例命令

adb 如何查看端口占用与进程信息?-图2
(图片来源网络,侵删)
  • 查看所有TCP连接:adb shell netstat -tn
  • 查看所有监听的UDP端口:adb shell netstat -uln
  • 查看端口对应的进程(需root):adb shell netstat -tnlp

输出解析: 输出结果通常包含以下列:

  • Proto:协议类型(TCP/UDP)
  • Local Address:本地IP和端口(如0.0.1:8080
  • Foreign Address:远程IP和端口(如168.1.100:54321
  • State:连接状态(如LISTENESTABLISHED
  • PID/Program name:进程ID和名称(需-p选项)

使用ss查看端口

ssnetstat的替代工具,在Linux新版本中推荐使用,因其输出更简洁、查询速度更快,基础语法为:

adb shell ss [选项]

常用选项及功能:

  • -t:TCP连接
  • -u:UDP连接
  • -n:数字形式显示
  • -l:监听端口
  • -p:显示进程信息(需root)
  • -4-6:指定IPv4或IPv6

示例命令

adb 如何查看端口占用与进程信息?-图3
(图片来源网络,侵删)
  • 查看所有监听的TCP端口:adb shell ss -tnl
  • 查看UDP端口对应的进程(需root):adb shell ss -unlp

输出解析ss的输出列与netstat类似,但更精简,

  • State:连接状态
  • Local Address:Port:本地地址和端口
  • Peer Address:Port:远程地址和端口
  • Process:进程信息(需-p选项)

进阶技巧与实际应用

过滤特定端口或进程

若需查看特定端口(如8080)的占用情况,可结合grep命令:

adb shell netstat -tn | grep 8080

或查看特定进程(如nginx)的端口占用:

adb shell netstat -tnlp | grep nginx

查看端口占用进程的详细信息

当需要进一步分析占用端口的进程时,可通过PID查询进程详情:

# 假查通过netstat获取PID为1234
adb shell "ps -ef | grep 1234"

或查看进程的文件描述符(需root):

adb shell "ls -l /proc/1234/fd | grep socket"

监控端口变化

动态监控端口连接状态的变化,可使用watch命令(需设备支持):

adb shell watch -n 1 "netstat -tn | grep ESTABLISHED"

每秒刷新一次,显示已建立的TCP连接。

查看端口与服务的绑定关系

Android系统中,部分服务(如httpdadbd)会绑定固定端口,可通过以下命令查看系统服务端口:

adb shell cat /proc/net/tcp | awk '{print $2}' | sort | uniq

输出为十六进制端口号,需转换为十进制(如001f对应31)。

命令对比与适用场景

命令 优点 缺点 适用场景
adb shell netstat 兼容性强,所有Android设备支持 输出冗余,查询速度较慢 旧版本Android设备,基础网络连接查看
adb shell ss 输出简洁,速度快 部分旧设备可能不支持 新版本Android设备,高效监控
netstat + grep 精准过滤端口/进程 需额外管道操作 快速定位特定端口或进程
ss -p + root 直接关联进程信息 需root权限 深度调试,分析端口占用来源

相关问答FAQs

Q1: 为什么使用netstat -pss -p时无法显示进程信息?
A: 显示进程信息需要root权限,若设备未root,可尝试通过adb root获取root权限(部分设备不支持),或使用adb shell ps结合端口号手动匹配进程,先通过netstat -tn获取PID,再执行adb shell "ps -ef | grep PID"

Q2: 如何区分TCP和UDP端口占用?
A: TCP和UDP是不同的协议,端口不冲突,使用netstat -tn查看TCP端口,netstat -un查看UDP端口,若需同时查看两者,可执行adb shell netstat -tnu,80端口通常为HTTP(TCP),53端口为DNS(UDP),需根据协议类型分别排查。

分享:
扫描分享到社交APP
上一篇
下一篇