adb命令——基础系统类命令 ——系统cpu内存进程等属性相关命令

Posted 小白龙白龙马

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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




 

以上是关于adb命令——基础系统类命令 ——系统cpu内存进程等属性相关命令的主要内容,如果未能解决你的问题,请参考以下文章

adb命令——基础系统类命令

adb命令——adb shell top命令

adb 查看内存,cpu,流量

adb shell top 使用

adb命令检测apk启动时间内存CPU使用情况流量电池电量等——常用的adb命令

Linux系统命令与CPU硬盘内存网络状态监控