记录windows网络和adb的一些命令

本文详细介绍Windows下网络诊断命令如netstat、tasklist等的高级用法,以及ADB工具的全面指南,涵盖Android设备的日志导出、应用管理、系统信息查询等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很久没写博客了,主要是工作上忙着没什么时间。
今天写一些windows的网络命令和adb操作Android手机的一些命令。
前几天windows10自动升级了,之后就不能上网了,qq登录就提示防火墙问题,搜索之后,发现需要重置网络,网络就正常了。cmd命令:netsh winsock reset
之后,就学习了一下,windows 端口查看命令。
netstat -ano : 查看端口占用列表
netstat -ano|findstr 5554 : 查看端口5554是否被占用
windows cmd 提供的操作方法如下:
显示协议统计信息和当前 TCP/IP 网络连接。
NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]

-a : 显示所有连接和侦听端口。
-b : 显示在创建每个连接或侦听端口时涉及的可执行程序。在某些情况下,已知可执行程序承载多个独立的组件,这些情况下,显示创建连接或侦听端口时 涉及的组件序列。在此情况下,可执行程序的 名称位于底部 [] 中,它调用的组件位于顶部,直至达到 TCP/IP。注意,此选项 可能很耗时,并且在你没有足够权限时可能失败。
-e 显示以太网统计信息。此选项可以与 -s 选项 结合使用。
-f 显示外部地址的完全限定域名(FQDN)。
-n 以数字形式显示地址和端口号。
-o 显示拥有的与每个连接关联的进程 ID。
-p proto 显示 proto 指定的协议的连接;proto 可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:P、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-q 显示所有连接、侦听端口和绑定的非侦听 TCP 端口。绑定的非侦听端口不一定与活动连接相关联。
-r 显示路由表。
-s 显示每个协议的统计信息。默认情况下 显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;-p 选项可用于指定默认的子网。
-t 显示当前连接卸载状态。
-x 显示 NetworkDirect 连接、侦听器和共享 终结点。
-y 显示所有连接的 TCP 连接模板。无法与其他选项结合使用。
interval 重新显示选定的统计信息,各个显示间暂停的间隔秒数。按 CTRL+C 停止重新显示统计信息。如果省略,则 netstat 将打印当前的配置信息一次。
tasklist|findstr 16140 : 查找pid是16140具体是什么进程。


Android Debug Bridge(adb)的学习资料,这个是最全面的,介绍很多adb命令,非常实用
awesome-adb

导出android 手机日志
adb logcat -v time>D:\log.txt ,这个命令会读取手机日志存在d盘log文件中,按ctrl +c停止记录,之后你就可以查看日志了
logcat记录所有的日志,包括系统events日志

adb logcat -b main -b system -b radio -b events  -v time > log.txt

adb install -r <apk path> 覆盖安装apk

    # 查看设备ip
    adb shell ifconfig

    # 查看设备分辨率
    adb shell
    wm size 
    wm density

    # 卸载apk
    adb uninstall <包名>

    # 安装apk
    adb install -r <apk在PC上的路径>
    adb shell pm install <apk在Android上的路径>

    # 启动Activity
    adb shell am start <包名>/.<Activity>
    # 启动浏览器
    adb shell am start -a android.intent.action.VIEW -d http://www.baidu.com
    # 监控crash和ANR
    adb shell am monitor
    # 结束应用
    adb shell am force-stop <包名>

    # dump日志 dumpsys, dumpstate 
    adb shell dumpsys <路径>


    # 查看apk
    adb shell pm list package 

    # 开启黑夜模式
    # 先adb root
    adb shell cmd uimode night yes
    adb shell cmd uimode night no

adb 收集日志脚本

@echo off
::V1.0 2021-1-18

::各个系统不同,可以根据需求添加或者删除不必要的目录下的数据获取

echo 版本号:Get Android All Log V1.0
echo.

echo 当前时间是:%time% 即 %time:~0,2%点%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒@

set date_time="%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%_%time:~6,2%%time:~9,2%"
::设置显示的文件夹名称
set Folder="Logs_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%_%time:~6,2%%time:~9,2%"
echo 日志文件夹:%Folder%
mkdir %Folder%

::获取root权限,下面pull一些隐私目录的数据需要root权限
adb remount
adb root
::创建文件夹
mkdir %Folder%\device
::获取系统的所有app服务
adb shell ps -A > %Folder%\device\ps.txt
::获取系统的cup等占用情况
adb shell top -b -n 1 > %Folder%\device\top.txt
::获取系统的cup前十个占用最多的进程信息
adb shell top -b -n 1 -H -m 10 -s 6 -o pid,tid,user,pr,ni,%%cpu,s,virt,res,pcy,cmd,name > %Folder%\device\top2.txt
::获取系统的进程内核信息
adb shell cat /proc/cmdline > %Folder%\device\cmdline.txt
::获取系统的进程内存占用信息
adb shell cat /proc/meminfo > %Folder%\device\meminfo.txt
::获取系统的cup信息
adb shell cat /proc/cpuinfo > %Folder%\device\cpuinfo.txt
::获取系统的prop属性信息
adb shell getprop > %Folder%\device\getprop.txt
::获取系统的内存大小信息
adb shell df -h > %Folder%\device\df.txt

::获取系统的当前界面截图
adb shell screencap /mnt/sdcard/Pictures/capture.png
adb pull /mnt/sdcard/Pictures/capture.png %Folder%\capture.png

::获取系统的dumpsys信息,包含dumpsys package XXX的信息
mkdir %Folder%\dumpsys
adb shell dumpsys > %Folder%\dumpsys\dumpsys.txt

::获取系统的缓存日志
adb shell  logcat -v threadtime -d > %Folder%\logcat.txt

::获取系统的各目录下的日志,根据不同系统进适配

::系统Android日志
adb pull   /data/log/android_logs       %Folder%\android_logs
::Dalvik、状态监视调试器、C层代码以及libc的一些问题导致的错误日志
adb pull   /data/tombstones             %Folder%\tombstones
::系统ANR异常日志
adb pull   /data/anr                    %Folder%\anr
::系统内核日志
adb pull   /sys/fs/pstore               %Folder%\pstore
::系统内核应用程序崩溃数据
adb pull   /data/system/dropbox         %Folder%\dropbox
::系统??日志
adb pull   /data/log/reliability        %Folder%\reliability_system
adb pull   /data/vendor/log/reliability %Folder%\reliability_vendor
::系统settings下的system、secure、global等属性
adb pull /data/system/users/0           %Folder%\settings

::获取系统的recovery信息
mkdir %Folder%\recovery
adb pull /splash2/recovery %Folder%\recovery

echo.
echo ==========log抓取完成==========
pause
————————————————
版权声明:本文为CSDN博主「峥嵘life」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wenzhi20102321/article/details/81058196

致敬前辈,砥砺前行!
站在巨人肩膀,才能看的更远!一起努力吧!

<think>我们正在Windows环境中使用ADB(AndroidDebugBridge)来捕获Android设备的日志。用户希望在执行ADB命令结束时抓取日志,这通常意味着我们需要在命令执行完成后自动保存日志文件。根据引用内容,我们可以使用以下命令来抓取日志:1.将日志输出到文件:`adblogcat>D:\crash.txt`(引用[1])2.使用`findstr`(Windows下的grep替代)来过滤特定应用的日志:`adblogcat|findstr应用包名`(引用[1])3.在Python脚本中调用ADB并持续抓取日志,同时可以使用正则表达式匹配关键字(引用[2])但是,用户要求的是在ADB命令结束时捕获日志。这里有两种理解:1.用户希望当ADB命令(可能是任意命令,比如安装应用)执行完成后,立即抓取一段日志(比如抓取该命令执行过程中产生的日志)。2.用户希望持续抓取日志,并在某个时刻(比如按Ctrl+C)停止抓取并保存。考虑到常见的需求,可能是第二种:用户执行一些操作(比如启动应用、进行操作),然后停止抓取日志。我们可以通过以下步骤实现:步骤1:启动日志抓取,将日志输出到文件。步骤2:执行其他ADB命令(比如启动应用、进行测试等)。步骤3:结束日志抓取(通常通过Ctrl+C,但在脚本中我们需要另一种方式)。然而,在Windows命令提示符下,我们可以这样手动操作:1.输入命令开始抓取日志:`adblogcat>D:\mylog.txt`2.执行其他操作(此时日志持续写入文件)3.按Ctrl+C停止抓取。但用户希望“结束时”自动捕获,因此我们可能需要编写一个脚本,在脚本中依次执行:1.启动日志抓取(后台运行)2.执行指定的ADB命令(比如安装、启动应用等)3.命令执行完成后,停止日志抓取。然而,在Windows中,我们无法像Linux那样方便地后台运行命令并获取进程ID来终止。但我们可以使用两个脚本:一个用于启动日志抓取,另一个用于停止(通过taskkill)。另一种方法是使用Python脚本(如引用[2]所示)来控制ADB日志抓取。我们可以启动一个子进程运行`adblogcat`,然后执行其他命令,最后终止该子进程。下面提供一个Python脚本示例,它可以在执行一系列ADB命令后自动停止日志抓取:思路:1.使用subprocess.Popen启动`adblogcat`,将其输出重定向到文件。2.执行其他ADB命令(比如安装应用、启动Activity等)。3.等待这些命令执行完成。4.终止日志抓取的进程。示例脚本:```pythonimportsubprocessimporttime#开始抓取日志,将日志输出到文件log_file=open('D:\\mylog.txt','w')log_process=subprocess.Popen(['adb','logcat'],stdout=log_file,stderr=subprocess.PIPE)#执行其他ADB命令,例如启动应用#这里以启动一个应用为例,替换成你需要的命令subprocess.call(['adb','shell','am','start','-n','com.example/.MainActivity'])#等待一段时间,让操作完成(或者根据实际情况等待特定事件)time.sleep(10)#结束日志抓取log_process.terminate()#或者使用kill()如果terminate无效log_file.close()print("日志抓取已完成,日志保存在D:\\mylog.txt")```注意:上述脚本中,我们使用`subprocess.Popen`来启动一个持续运行的`adblogcat`进程,然后执行另一个ADB命令(启动应用),等待10秒后终止日志抓取。但是,`adblogcat`进程可能不会因为`terminate`而立即停止,特别是在Windows上。我们可以使用`taskkill`来强制终止:```pythonlog_process.terminate()try:log_process.wait(timeout=5)#等待5秒让进程退出exceptsubprocess.TimeoutExpired:log_process.kill()#强制终止```或者,我们可以使用Windows的taskkill命令根据进程ID来终止:```pythonimportsignallog_process.send_signal(signal.CTRL_C_EVENT)#在Windows上发送Ctrl+C信号```但是,`subprocess.Popen`的`send_signal`使用`CTRL_C_EVENT`可能只对控制台程序有效,且必须是创建时带有`CREATE_NEW_PROCESS_GROUP`标志。因此,另一种方法是使用`taskkill`命令:```pythonsubprocess.call(['taskkill','/F','/T','/PID',str(log_process.pid)])```然而,更简单的方式是,我们可以在启动`adblogcat`时使用`/B`选项(如果需要)来终止进程树。但注意,`adblogcat`可能启动了一个子进程,我们需要终止整个进程树。考虑到跨平台简洁性,我们尝试先使用`terminate``kill`。另外,用户可能希望抓取特定应用的日志,我们可以使用`adblogcat|findstr包名`,但是管道符号在Windows子进程中处理起来比较复杂。我们可以使用:```pythonlog_process=subprocess.Popen('adblogcat|findstrcom.example',stdout=log_file,stderr=subprocess.PIPE,shell=True)```注意,这里设置了`shell=True`,这样可以通过Windows的shell来解析管道。但是,使用`shell=True`时,终止进程需要终止整个shell进程,而`shell=True`会启动一个cmd.exe进程,然后这个进程运行我们的命令。因此,终止时我们只需要终止这个shell进程即可,它创建的子进程也会被终止。但是,使用`shell=True`管道会使得终止整个进程树变得复杂。因此,我们可以避免使用管道,而使用`adblogcat`本身的过滤功能(效率更高):```pythonadblogcat--pid=`adbshellpidof-scom.example`#但是--pid需要Android7.0以上```或者,我们可以使用Python在读取日志时进行过滤。鉴于用户没有指定过滤,我们先不进行过滤。因此,我们提供以下两种方案:方案一:手动操作(适合临时抓取)1.打开命令提示符。2.输入:`adblogcat>D:\mylog.txt`3.执行你的测试操作(例如运行应用、进行操作等)。4.操作完成后,按Ctrl+C停止日志抓取。方案二:使用Python脚本自动抓取(适合自动化测试)参考上面的Python脚本示例。根据引用[3],我们还需要确保ADB环境变量已经配置,并且设备连接正常(只有一个设备,或者使用`-s`指定设备)。因此,回答如下:</think>在 Windows 系统中通过 ADB 命令结束时捕获日志,可通过以下方法实现: ### 方法 1:直接重定向输出(基础方式) 1. **启动日志捕获** 在命令提示符执行(日志将实时写入文件): ```cmd adb logcat > D:\log.txt ``` - `>` 表示覆盖写入,`>>` 表示追加写入 - 路径可自定义,如 `C:\logs\debug.log` 2. **执行测试操作** 在设备上进行需要监控的操作(如启动应用、触发功能等)。 3. **结束捕获** 按 `Ctrl + C` 终止日志记录,此时文件自动保存[^1]。 > **优点**:操作简单,无需额外工具 > **缺点**:需手动终止,无法自动关联命令结束 --- ### 方法 2:Python 脚本自动化(推荐) ```python import subprocess import time # 启动日志捕获(后台持续运行) log_process = subprocess.Popen( "adb logcat", stdout=open("D:/debug.log", "w"), stderr=subprocess.STDOUT, shell=True ) # 执行目标ADB命令(示例:安装APK) adb_command = "adb install app.apk" subprocess.run(adb_command, shell=True, check=True) # 命令结束后停止日志捕获 log_process.terminate() # 正常终止 time.sleep(1) # 等待缓冲写入 if log_process.poll() is None: # 强制终止(如果仍在运行) log_process.kill() print("日志已保存至 D:/debug.log") ``` **关键功能**: 1. 使用 `subprocess.Popen` 在后台持续捕获日志 2. `subprocess.run` 执行目标 ADB 命令(可替换为任意命令) 3. 命令结束后自动终止日志进程[^2] --- ### 方法 3:批处理脚本 创建 `capture_log.bat`: ```bat @echo off set LOG_PATH=D:\combined_log.log :: 启动日志捕获(后台运行) start /B adb logcat > %LOG_PATH% :: 执行目标命令(示例:启动应用) adb shell am start -n com.example/.MainActivity :: 等待操作完成(按需调整时间) timeout /t 10 >nul :: 停止日志捕获 taskkill /F /IM adb.exe >nul 2>&1 echo 日志已保存到 %LOG_PATH% ``` 运行脚本后,日志会在命令序列结束时自动保存。 --- ### 注意事项 1. **设备连接验证** 先执行 `adb devices` 确认设备在线[^3] 2. **日志过滤技巧** - 按包名过滤:`adb logcat | findstr "com.example"` - 按优先级过滤:`adb logcat *:E`(仅抓取错误日志) 3. **多设备处理** 指定设备序列号:`adb -s 设备ID logcat` 4. **清除旧日志** 开始前运行 `adb logcat -c` 清空缓冲区 > **提示**:复杂场景建议使用 Python 脚本(方法2),可实现更精确的结束触发日志解析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值