15.setting命令
setting命令可以很方便的更改系統設置中的參數(如修改系統默認輸入法)
安卓Settings模塊淺析:https://www.jianshu.com/p/ed8508fe4289
adb shell settings 控制安卓系統設置:https://blog.csdn.net/xingchenxuanfeng/article/details/52023048 <已看>
(0)# settings get system screen_off_timeout 獲取屏幕的休眠時間
(1)# settings put system screen_off_timeout 999999999 設置屏幕的睡眠時間,也是用來設置系統的睡眠時間(下次斷電上電后還是有效的)
(2)# settings get secure default_input_method 獲得系統默認輸入法
(3)# settings get system screen_brightness_mode 獲取屏幕亮度模式
(4)# settings get system screen_brightness 獲取屏幕亮度
(5)# settings put system screen_brightness 150 設置屏幕亮度為150
(6)# settings get global auto_time 獲取日期時間選項中通過網絡獲取時間的狀態
(7)# settings put global auto_time 0
(8)# settings get global wifi_on 獲取系統wifi是否打開
(9) # settings put global wifi_on 0 關閉wifi
(10)# settings get global airlpane_mode_on 獲取系統是否處於飛行模式
(11)# settings get secure android_id 獲取android_id
注意這里面的system和global的區別 ?
16.TODO:怎樣讓Android一啟動就執行一個腳本?
17.TODO:查frameworks/base/packages/SettingsProvider/res/values/defaults.xml這個文件作用?
18.查一運行adb,Ubuntu就非常卡 ?
19. pm命令
# pm list packages 列出應用列表,eg: package:android.car.usb.handler,加-s列出系統應用,加-3列出第三方應用,加[name]列出與name相關的應用(等效grep)。
# pm clear <packagename> 相當於在設置里的應用信息界面點擊了「清除緩存」和「清除數據」。
21.am命令
1.am主要用於與應用程序交互,用法:am <command> 常用的<command>如下:
# start [options] <INTENT> 啟動 <INTENT> 指定的 Activity
# startservice [options] <INTENT> 啟動 <INTENT> 指定的 Service
# broadcast [options] <INTENT> 發送 <INTENT> 指定的廣播
# force-stop <packagename> 停止 <packagename> 相關的進程, <INTENT> 參數很靈活,和寫 Android 程序時代碼里的 Intent 相對應。
# am start [options] <INTENT> 調起 Activity,eg: am start -n com.tencent.mm/.ui.LauncherUI
# am startservice [options] <INTENT> 調起service,eg: am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService
# am broadcast [options] <INTENT> 發送廣播,eg: am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver 表示向 org.mazhuang.boottimemeasure/.BootCompletedReceiver 發送一個BOOT_COMPLETED廣播,這類用法在測試的時候很實用,比如某個廣播的場景很難制造,可以考慮通過這種方式來發送廣播。
# am force-stop <packagename> 強制停止某一個應用
參考:Am命令用法
22.input命令來模擬按鍵輸入
1.eg輸入觸摸: # input touchscreen tap 50 250 # input touchscreen tap 1000 250 在屏幕上可以看到和觸摸了屏幕一樣的效果。
2.input keyevent <keycode> 3表示home鍵,4表示返回鍵
3.input keyevent 26 電源鍵,關閉電源,此時車機就關機了。
4.input keyevent 82 菜單鍵
5.input text 12345678 例如屏幕上顯示要輸入wifi密碼,此時這條指令就會把密碼輸出到屏幕中顯示密碼的位置。
23.adb相關命令
24.logcat命令
25.getprop獲取系統屬性
# getprop ro.product.model 查看設備信息 eg: Nexus 5
# getprop ro.build.version.release 獲取Android系統的版本,如8.1.0
26.dumpsys 查看系統的狀態 TODO:查它的具體功能 ?
1.# dumpsys battery 查看電池狀態
level: 100 //當前電量
scale: 100 //最大電量
2.# dumpsys window displays 查看顯示屏參數。 其打印信息中mDisplayId為顯示屏編號,init是初始分辨率和屏幕密度,若app的高度比init里的要小,表示屏幕底部有虛擬按鍵。
3.類似命令還有:dumpcache dumpstate dumpsys TODO:查
27.wm命令
1.# wm size 查看屏幕分辨率 eg: wm size打印Physical size: 2608x720,可以看出雙屏使用同一framebuffer.
2.# wm density 查看屏幕密度
28.查看各個網口的MAC地址
# cat /sys/class/net/wlan0/address
# cat /sys/class/net/eth0/address
29.CPU信息
# cat /proc/cpuinfo
29.查看更多硬件屬性配置信息
# cat /system/build.prop 它里面的每一項可以通過getprop命令單獨查看
30.screencap命令
# screencap -p /sdcard/sc.png 屏幕截圖,目前測試發現若是有2個屏,截的圖只是一個屏的。用-d指定另一個屏的id也截取不到。
31.screenrecord命令
# screenrecord /sdcard/filename.mp4 屏幕錄制,停止時按 Ctrl-C,默認錄制時間和最長錄制時間都是 180 秒
32.wifi的配置文件目錄
# ls /data/misc/wifi/
33.data命令設置系統時間
# date -s 20160823.131500
34.monkey命令
# monkey -p <packagename> -v 500 使用monkey進行壓力測試,向 <packagename> 指定的應用程序發送 500 個偽隨機事件。Monkey 的詳細用法參考 官方文檔:https://developer.android.com/studio/test/monkey.html
35.重啟到recovery模式
# reboot recovery 重啟到recovery模式
# reboot 從recovery重啟到Android
# reboot bootloader 重啟到 Fastboot 模式
36.getevent可以用來監聽系統中所有的輸入設備產生的事件.
37.內核中進程狀態的定義
static const char * const task_state_array[] = { /* states in TASK_REPORT: */ "R (running)", /* 0x00 */ "S (sleeping)", /* 0x01 */ "D (disk sleep)", /* 0x02 */ "T (stopped)", /* 0x04 */ "t (tracing stop)", /* 0x08 */ "X (dead)", /* 0x10 */ "Z (zombie)", /* 0x20 */ "P (parked)", /* 0x40 */ /* states beyond TASK_REPORT: */ "I (idle)", /* 0x80 */ };
37. ps 命令
# ps --help
用法:ps [-AadefLlnwZ] [-gG GROUP,] [ -k FIELD,] [ -o FIELD,] [ -p PID,] [-t TTY,] [-uU USER,]
作用:列出進程信息。
eg:多個選項一起使用:# ps -o SCHED, -t, -g system, -o TCNT,
(1)要顯示的進程(選擇可能是以逗號分隔的列表):
-A 所有進程
-a 具有非會話領導者的終端的進程
-d 所有不是會話領導者的進程
-e 與-A相同
-g 屬於GROUPs
-G 屬於真正的GROUPs(在sgid之前)
-p PIDs(--pid)
-P 父PID(--ppid)
-s 在會話ID中
-t 附加到選定的TTY
-T 顯示主題
-u 由USERs擁有
-U 由真實用戶擁有(在suid之前)
eg:
# ps -g system 查看group為system的所有進程,其它可選項:root wifi radio audioserver logd bluetooth media vehicle_network shell cameraserver drm keystore mediaex mediacodec tombstoned bluetooth u0_aXX webview_zygote
# ps -P 1 列出init進程創建的伺服進程
# ps -p 2 然后再# ps -P 2 可以列出由kthreadd創建的伺服進程
# ps -t ttyMSM0 列出占用串口ttyMSM0的進程。結合cat /proc/cmdline中的console=ttyMSM0可以知道占用控制台的是哪些進程。
(2)對輸出做修改:
-k 按+增加或-降低順序(--sort)對FIELD進行排序
-M 測量字段寬度(根據需要擴展)
-n 顯示數字USER和GROUP
-w 寬輸出(不截斷字段)
eg:
# ps -n 1 列出init進程的使用個數
(3)要顯示哪些域(默認 = -o PID,TTY,TIME,CMD)
-f 完整列表(-o USER:12=UID,PID,PPID,C,STIME,TTY,TIME,ARGS=CMD)
-l 長列表(-o F,S,UID,PID,PPID,C,PRI,NI,ADDR,SZ,WCHAN,TTY,TIME,CMD)
-o 輸出FIELD而不是默認值,每個都有可選的:size和= title
-O 將FIELDS添加到默認值
-Z 包括LABEL
(4)輸出的域解釋
ARGS 減去初始化路徑的commandline
CMD Command (thread) name (stat[2])
CMDLINE Command line (argv[])
COMM Command filename (/proc/$PID/exe)
COMMAND Command file (/proc/$PID/exe)
NAME Process name (argv[0] of $PID)
eg:
# ps -A -o CMDLINE 只想要所有進程的cmdline
(5)使用-o輸出的進程的屬性
ADDR 指令指針
BIT 這個過程是32位還是64位 eg: # ps -A -o BIT 發現的確有32bit的
CPU 運行哪個處理器 eg: # ps -A -o CPU 查看所有進程都運行在哪個CPU下
ETIME 自PID啟動以來經過的時間 eg:# ps -g bluetooth -o ETIME 看bluetooth服務啟動時長,以分:秒表示
F 標志(1 = FORKNOEXEC 4 = SUPERPRIV) eg: # ps -g bluetooth -o F
GID 查看group ID eg: # ps -g bluetooth -o GID
GROUP 組名稱 eg: # ps -g bluetooth -o GROUP
LABEL 安全標簽 eg: # ps -g bluetooth -o LABEL
MAJFL 主要頁面錯誤 eg: # ps -g bluetooth -o MAJFL
MINFL 次要頁面錯誤 eg:# ps -g bluetooth -o MINFL
NI nice值(越低越快) eg: # ps -g bluetooth -o NI
PCPU 使用的CPU時間百分比 eg: # ps -g bluetooth -o PCPU
PCY Android調度策略 eg:# ps -g bluetooth -o PCY
PGID 流程組ID eg: # ps -g bluetooth -o PGID
PID 進程ID eg:# ps -g bluetooth -o PID
PPID 父進程ID
PRI 優先級(更高更快) eg: # ps -g bluetooth -o PRI
PSR 處理器最后執行了 eg: # ps -g bluetooth -o PSR
RGID Real(在sgid之前)組ID eg:# ps -g bluetooth -o RGID
RGROUP Real(在sgid之前)組名
RSS 常駐集大小(正在使用的頁面) eg: # ps -g bluetooth -o RSS
RTPRIO 實時優先級 eg:# ps -g bluetooth -o RTPRIO
RUID Real(在suid之前)用戶ID
RUSER Real(在suid之前)用戶名 eg: # ps -g bluetooth -o RUSER
S 流程狀態:R(運行) S(休眠) D(設備I/O) T(停止) t(跟蹤) Z(僵屍) X(deader) x(死) K(wakekill) W(醒來)
SCHED 調度策略(0 = other,1 = fifo,2 = rr,3 = batch,4 = iso,5 =空閑)
STAT 過程狀態(S)加:
<高優先級 N低優先級 L鎖定存儲器
會話負責人+前台l多線程
STIME 以hh開始的過程開始時間:mm(size:19表示yyyy-mm-dd hh:mm:ss)
SZ 內存大小(完全換出進程需要4k頁) eg: # ps -g bluetooth -o SZ
TCNT 線程數 eg: # ps -g bluetooth -o TCNT
TID 線程ID eg: # ps -g bluetooth -o TID
TIME CPU的時間消耗
TTY 控制終端
UID 用戶ID
USER 用戶名
VSZ 虛擬內存大小(1k單位) eg:# ps -g bluetooth -o VSZ
%VSZ VSZ占物理內存的百分比 eg:# ps -o %VSZ
WCHAN 我們在內核中等待什么 eg: # ps -g bluetooth -o WCHAN