Android系統是基於 Linux 核心的,也就是說Android系統的底層是Linux系統。所以 Linux 裡的很多命令在 Android系統裡也有相同或類似的實現,在 adb shell
裡就可以呼叫。前面部分內容已經用到了 adb shell
命令,我們再來補充一下對adb shell
命令的認識。
提示:要在Android手機上執行的
adb shell
命令,就需要先root
手機,而虛擬機器是直接root
的Android系統,所以直接可以在虛擬機器上使用adb shell
命令。
1、檢視程式
命令:
adb shell ps
輸出示例:
USER PID PPID VSIZE RSS WCHAN PC NAME
root 1 0 8904 788 ffffffff 00000000 S /init
root 2 0 0 0 ffffffff 00000000 S kthreadd
...
u0_a71 7779 5926 1538748 48896 ffffffff 00000000 S com.sohu.inputmethod.sogou:classic
u0_a58 7963 5926 1561916 59568 ffffffff 00000000 S org.mazhuang.boottimemeasure
...
shell 8750 217 10640 740 00000000 b6f28340 R ps
各列含義:
列名 | 含義 |
---|---|
USER |
所屬使用者 |
PID |
程式 ID |
PPID |
父程式 ID |
NAME |
程式名 |
2、檢視實時資源佔用情況
命令:
adb shell top
輸出示例:
User 0%, System 6%, IOW 0%, IRQ 0%
User 3 + Nice 0 + Sys 21 + Idle 280 + IOW 0 + IRQ 0 + SIRQ 3 = 307
PID PR CPU% S #THR VSS RSS PCY UID Name
8763 0 3% R 1 10640K 1064K fg shell top
131 0 3% S 1 0K 0K fg root dhd_dpc
6144 0 0% S 115 1682004K 115916K fg system system_server
132 0 0% S 1 0K 0K fg root dhd_rxf
1731 0 0% S 6 20288K 788K fg root /system/bin/mpdecision
217 0 0% S 6 18008K 356K fg shell /sbin/adbd
...
7779 2 0% S 19 1538748K 48896K bg u0_a71 com.sohu.inputmethod.sogou:classic
7963 0 0% S 18 1561916K 59568K fg u0_a58 org.mazhuang.boottimemeasure
...
各列含義:
列名 | 含義 |
---|---|
PID |
程式 ID。 |
PR |
優先順序。 |
CPU% |
當前瞬間佔用 CPU 百分比。 |
S |
程式狀態(R=執行,S=睡眠,T=跟蹤/停止,Z=殭屍程式)。 |
#THR |
執行緒數。 |
VSS |
Virtual Set Size 虛擬耗用記憶體(包含共享庫佔用的記憶體)。 |
RSS |
Resident Set Size 實際使用實體記憶體(包含共享庫佔用的記憶體)。 |
PCY |
排程策略優先順序,SP_BACKGROUND/SPFOREGROUND 。 |
UID |
程式所有者的使用者 ID。 |
NAME |
程式名。 |
top
命令還支援一些命令列引數,詳細用法如下:
Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ]
引數:
-m num 最多顯示多少個程式
-n num 重新整理多少次後退出
-d num 重新整理時間間隔(單位秒,預設值 5)
-s col 按某列排序(可用 col 值:cpu, vss, rss, thr)
-t 顯示執行緒資訊
-h 顯示幫助文件
3、檢視程式 UID
有兩種方案:
- 使用
adb shell dumpsys package <packagename> | grep userId=
命令的方式。
例如:$ adb shell dumpsys package org.mazhuang.guanggoo | grep userId=10394
- 通過
ps
命令找到對應程式的pid
之後 ,使用adb shell cat /proc/<pid>/status | grep Uid
命令的方式。
例如:$ adb shell gemini:/ $ ps | grep org.mazhuang.guanggoo u0_a394 28635 770 1795812 78736 SyS_epoll_ 0000000000 S org.mazhuang.guanggoo gemini:/ $ cat /proc/28635/status | grep Uid Uid: 10394 10394 10394 10394 gemini:/ $
4、其它ADB Shell命令說明
如下是其它常用命令的簡單描述,前文已經專門講過的命令不再額外說明:
命令 | 功能 |
---|---|
cat |
顯示檔案內容。 |
cd |
切換目錄。 |
chmod |
改變檔案的存取模式/訪問許可權。 |
df |
檢視磁碟空間使用情況。 |
grep |
過濾輸出。 |
kill |
殺死指定 PID 的程式。 |
ls |
列舉目錄內容。 |
mount |
掛載目錄的檢視和管理。 |
mv |
移動或重新命名檔案。 |
ps |
檢視正在執行的程式。 |
rm |
刪除檔案。 |
top |
檢視程式的資源佔用情況。 |
提示:和Linux系統中的命令基本上是一樣的。