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




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM