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




  • 相关阅读:
    JavaScript cookie详解
    Javascript数组的排序:sort()方法和reverse()方法
    javascript中write( ) 和 writeln( )的区别
    div做表格
    JS 盒模型 scrollLeft, scrollWidth, clientWidth, offsetWidth 详解
    Job for phpfpm.service failed because the control process exited with error code. See "systemctl status phpfpm.service" and "journalctl xe" for details.
    orm查询存在价格为空问题
    利用救援模式破解系统密码
    SSH服务拒绝了密码
    C# 调用 C++ DLL 中的委托,引发“对XXX::Invoke类型的已垃圾回收委托进行了回调”错误的解决办法
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12992590.html
Copyright © 2011-2022 走看看