『與善仁』Appium基礎 — 7、ADB Shell命令的使用


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

有兩種方案:

  1. 使用adb shell dumpsys package <packagename> | grep userId=命令的方式。
    例如:
    $ adb shell dumpsys package org.mazhuang.guanggoo | grep userId=10394
    
  2. 通過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系統中的命令基本上是一樣的。

參考:https://github.com/mzlogin/awesome-adb


免責聲明!

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



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