zoukankan      html  css  js  c++  java
  • adb命令——基础系统类命令 ——系统cpu、内存、进程等属性相关命令

    adb命令:官方参考网址:https://developer.android.google.cn/studio/command-line/adb?hl=zh-cn#-t-option

    1、adb       shell        dumpsys       meminfo       包名.apk  ——查看指定包名应用内存使用情况

         adb       shell        dumpsys        meminfo       com.ifeng.news2

     

    =======================================================================

    2、adb     shell     dumpsys      cpuinfo     —— 监控cpu

         adb     shell      dumpsys      cpuinfo       |findstr      com.ifeng.news2

    ================================================================================

    3、adb       shell       dumpsys          battery  —— 监控耗电变化,查看电池状态

    ==================================================================

    4、adb      shell       am       force-stop        com.ifeng.news2  ——强制杀死某个进程,强制停止APP进程,不会清除APP进程在系统中产生的数据

        adb       shell       pm      clear      com.ifeng.news2  ——停止APP进程,并且清除这个APP进程产生的所有数据,相当于reset

                                                                                                 执行该命令后输出success即表示命令执行成功,app进程被杀死,且会清楚所有数据,

                                                                                                 相当于卸载重装的效果,一般不建议使用。

    ====================================================================================================================

    一、ps命令详细说明
    1,ps的命令参数:-t -x,-P,-p,-c [pid|name]

     -t显示进程下的线程列表

       -x 显示进程耗费的用户时间和系统时间,单位s

       -P 显示调度策略,通过是bg or fg ,当获取失败将会un和er比之前打印的内容多出了一列PCY,表示进程的调度等级

       -p 显示进程的优先级和nice等级

       -c 显示进程耗费的CPU时间

       [PID]过滤指定进程PID,[name]过滤指定进程NAME

    2,直接使用ps:

    各列参数的意思:

    USER:进程当前用户;

    PID(Process Id):当前进程id;

    PPID(Process Parent ID):父进程ID;

    VSIZE(Virtual Size):当前进程虚拟内存的大小;

    RSS(Resident Set Size):实际驻留在内存中的没存大小;

    WCHAN:休眠进程在内核中的地址;

    PC(program counter):计算机中提供要从[存储器]中取出的下一个指令地址的[寄存器];

    NAME:进程状态值及名称;(这个状态不知道根据什么区分的,试了下没有参考价值)

    进程状态:
    D - 不可中断的睡眠态。
    R – 运行态
    S – 睡眠态
    T – 被跟踪或已停止
    Z – 僵尸态
    W - 进入内存交换(从内核2.6开始无效)
    X - 死掉的进程
    < - 高优先级
    N - 低优先级
    L - 有些页被锁进内存
    s - 包含子进程
    l - 多线程,克隆线程
    *+ - 位于后台的进程组 *

    2,根据包名(pkg_name)查看该进程的信息(在Linux中用grep,下面的例子是在windows下,所以用的是findstr);

    3, 查看newspage(21650)下的线程信息(暂时用他做什么分析):

    4,-x参数:

    5,-P 显示调度策略(这个比较有用)

    在列属性中增加了一个重要的参数PCY(进程调度等级)

    Android进程调度状态:

    1).foreground process

    2).visible process

    3).Service process4

    ).background process

    5).empty process

    6,-p 显示进程的优先级和nice等级

    第一个是在桌面操作的;第二个是进入newspage的主页面后操作的;

    PRIO(priority) 进程优化级 20
    NICE Nice值 0
    RTPRI 实时进程优先级 0
    SCHED 调度策略 SCHED_OTHER(默认策略)
    参考:https://blog.csdn.net/caonima0001112/article/details/50379738

    nice与进程调度:
    Linux中,使用nice value(以下成为nice值)来设定一个进程的优先级,系统任务调度器根据nice值合理安排调度。
    1),nice的取值范围为-20到19。
    2),通常情况下,nice的默认值为0。视具体操作系统而定。
    3),nice的值越大,进程的优先级就越低,获得CPU调用的机会越少,nice值越小,进程的优先级则越高,获得CPU调用的机会越多。
    4),一个nice值为-20的进程优先级最高,nice值为19的进程优先级最低。
    5),父进程fork出来的子进程nice值与父进程相同。父进程renice,子进程nice值不会随之改变。
    Android中的nice:
    由于Android基于Linux Kernel,在Android中也存在nice值。但是一般情况下我们无法控制,原因如下:
    1),Android系统并不像其他Linux发行版那样便捷地使用nice命令操作。
    2),renice需要root权限,一般应用无法实现。
    线程调度:
    虽然对于进程的优先级,我们无法控制,但是我们可以控制进程中的线程的优先级。在Android中有两种线程的优先级,一种为Android API版本,另一种是 Java 原生版本。Linux中,使用nice value(以下成为nice值)来设定一个进程的优先级,系统任务调度器根据nice值合理安排调度。

    7,-c 显示进程耗费的CPU时间

     ==============================================================================================================

    ps (process status):这个命令在adb 中是查看android系统的进程状态命令。

    1.简单用法,在Windows命令行,输入adb shell ps

     (1)各个字段名称及含义

    USER 进程当前所属的用户  
    PID 进程ID  
    PPID 父进程ID  
    VSIZE 进程的虚拟内存大小,以KB为单位  
    RSS 进程实际占用的内存大小,以KB为单位  
    WCHAN 进程正在睡眠的内核函数名称; 该函数名称是从/root、system.map文件中读取的,0代表进程处于运行态;否则代表内核地址(休眠态)
    PC 计算机中提供要从“存储器”中取出的下一个指令地址的寄存器  
    NAME 进程状态(注:状态说明见下)和名称 如上图中,NAME下的S代表进程状态。

    (2)NAME中进程状态的不同值如下:

    D 不可中断的睡眠态
    R 运行态
    S 睡眠态
    T 被跟踪或已停止
    Z 僵尸态
    W 进入内存交换(从内核2.6开始无效)
    X 死掉的进程
    < 高优先级
    N 低优先级
    L 有些页被锁进内存
    s 包含子进程
    l 多线程,克隆线程
    + 位于后台的进程组

    2.ps命令参数

    ps -P -p -t -x -c [pid] [name]

    -P 显示调度策略,通常是bg或fg,当获取失败将会是un和er
    -p 显示进程的优先级和nice等级
    -t 显示进程下的线程列表
    -x 显示进程耗费的用户时间和系统时间,格式(u:0, s:0),单位为:秒
    -c 显示进程耗费的CPU时间(低于4.0版本可能不兼容)
    [pid] 过滤指定的进程PID
    [name] 过滤指定的进程NAME

    (1)adb shell ps -P,图中圈出的是多出的PCY列,表示进程的调度等级。

     备注:进程调度状态有

    foreground process 前台
    background process 后台
    visible process 可视化进程
    Services process 服务进程
    empty process 空进程

    (2)adb shell ps -p

    PRIO 进程优先级
    NICE Nice值
    RTPRI 实时进程优先级
    SCHED 调度策略

     (3)adb shell ps -t 结果中的行数比 adb shell ps 命令多,列数一样

    (4)adb shell ps -x   显示耗用的用户及系统时间

     (5)adb shell ps -c  显示耗用的CPU时间,多了一个CPU列

     (6)多个参数使用 adb shell ps -c -x 1  (注:1代表PID)

     备注:虽然,android的内核是Linux,和Linux的ps不同,Linux的ps 命令中参数可以这样-aux,但是adb 中 ps的参数,不可以。需要用上图的方式使用。

    ====================================================================================================================

    • 打印设备/模拟器上的所有软件包: adb     shell     pm      list       packages

    • 只输出系统的包: adb     shell     pm      list      packages    -s

    • 只输出第三方的包: adb      shell       pm     list       packages    -3

    • 使用-e参数且设置过滤条件:  adb      shell     pm     list      packages     -e       [package_name]

    • 查看当前和用户交互的activity: adb shell dumpsys activity | grep 'mFoc'

    • 查找当前栈中的所有activity: adb shell dumpsys activity activities | grep [package_name]

    • 启动app入口程序: adb shell am start -W [package_name]/[LauncherActivity]

    • 查看当前手机机型的cpu信息: adb     shell     "getprop ro.product.cpu.abi"

    • 查看trace文件: /sdcard/Android/data/[package_name]/files/dmtrace.trace

    • 查看jar目录结构:jar tf test.jar

    • 杀死进程
      方法1:强制停止APP进程,不会清除APP进程在系统中产生的数据
      adb shell am force-stop package:执行该命令后没有输出,手机对应进程已被杀死。

    方法2:停止APP进程,并且清除这个APP进程产生的所有数据,相当于reset
    adb shell pm clear package
    执行该命令后输出success即表示命令执行成功,app进程被杀死,且会清楚所有数据,相当于卸载重装的效果,一般不建议使用。

    14.生成dex文件:dx --dex --output=target.dex test.jar

    15.jar cvf dynamic.jar com/*(前面是包名目录)

    16.查看电池状态: adb     shell     dumpsys      battery

    17.将USB充电停止: adb shell dumpsys battery unplug

    18.将手机IDLE状态许可:adb shell dumpsys deviceidle enable

    19.强制进入IDLE状态: adb shell dumpsys deviceidle force-idle

    20.如下命令设备走出IDLE状态:adb shell dumpsys deviceidle disable




  • 相关阅读:
    WebAPI实现移动端上传头像接口
    WebAPI发布IIS报错问题
    EF 解除属性映射到数据库中 NotMappedAttribute无效解决办法
    更改MVC注册Areas的顺序,掌控Areas的运作
    js判断字符串是否为JSON格式
    docker commit命令
    强大的strace命令用法详解
    Openshift概念
    如何在生产环境使用Btrace进行调试
    kill-9 kill-15
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12992590.html
Copyright © 2011-2022 走看看