A. Linux常用命令
列出當前目錄的文件
常用參數:
-a: 顯示當前目錄的所有文件,包含隱藏文件;
-l: 顯示文件詳情;
-Z: 顯示文件的 SE Linux context。
示例:ls -laZ [if !vml] [endif] 以 acct 為例: drwxr-xr-x:其中 d 代表該文件為目錄,若為 l 則為軟鏈接,軟連接後又箭頭代表其實際指向的文件,如etc -> /system/etc 則訪問 etc 實際等同訪問/system/etc,留空則代表該文件為一個文件;rwxr-xr-x 代表其許可權為 755,具體演算法為將上述欄位每 3 個分為 1 組得 rwx,r-x,r-x,凡是有字母標記的皆計數 1,反之為 0,得二進制 111,101,101,轉為 10 進制數字即得7, 5,5 ,即為該文件許可權; root root :依次代表該文件的所有者(owner)為 root,用戶組(group)為 root,上述屬性可通過 chown 命令修改,日常替換文件需與原文件該屬性維持一致; unlabeled:代表 SE Linux context。
前往指定目錄
更改文件所有者和用戶組 示例:chown root:root temfile 將 tmpfile文件 的所有者和用戶組從 meidia:media 更改為 root:root
將文件內容顯示出來。
注意不要隨便去 cat 一個很大的文件或與 log 驅動節點無關的文件,否則將造成串口輸出亂碼或死機!!!示例:cat /proc/kmsg 將列印出所有 kernel log。
用於抓取 android logcat 列印。
常用參數:
-v : 設置列印格式,可用選項為 brief process tag thread raw time threadtime long,我們比較常用 logcat -v time,此時抓的 log 將在每一行開頭添加時間信息;
-s : 設置過濾器,過濾器的選擇取決於軟體中列印 log 時使用的 TAG ,如
ActivityManagerService.java 中的列印使用的 TAG = ActivityManager,則抓相關列印方法為 logcat -s ActivityManager;
-c : 清除 log 緩存,常用於清除之前的列印緩存,如復現某個必現問題,則可先執行 logcat -c 再抓 logcat 重現必現手法以排除無關 log 冗餘信息影響問題定位; pm
包管理命令,用於管理安卓 app 應用。
常用參數:
-l : 顯示所有安裝包應用,等同於 pm list packages
以 package:/system/priv-app/Launcher2.apk=com.android.launcher 為例:
Apk Launcher2 路徑位於/system/priv-app/Launcher2.apk,其包名為 com.android.launcher
path : 根據報名返回所在 apk 路徑
install : 安裝 apk
-r :安裝一個已經存在的 apk 並保留其數據;
-d : 允許降級安裝
如:pm install -r xxx.apk
uninstall : 卸載 apk,命令僅支持卸載 data/app,後接包名;
如:pm uninstall com.sys.migusmartlink.ott.tv //卸載包名為 com.sys.migusmartlink.ott.tv 的 apk
隨機測試指令,會自動模擬一些用戶操作對 APP 進行壓力測試。
常用參數:
-p :指定啟動的 APK,我們比較常用的是 monkey -p com.xxx.yyy 1 來啟動一個 apk 的隨機頁面。
用於啟動和管理 activity 和 service
常用參數:
start : 後接 intent 啟動一個頁面;
startservice : 後接 intent 啟動一個 service; stopservice :後接 intent 停止一個 service; broadcast :後接一個 intent 發送一個廣播; kill :後接一個 app 包名,殺掉該 app 所有進程;在 shell 環境下用如下參數表述一個 intent:
[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
[-c <CATEGORY> [-c <CATEGORY>] ...]
[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
[--esn <EXTRA_KEY> ...]
[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
[--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
[--el <EXTRA_KEY> <EXTRA_LONG_VALUE> ...]
[--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE> ...]
[--eu <EXTRA_KEY> <EXTRA_URI_VALUE> ...]
[--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>]
[--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]]
[--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]]
[--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]]
[-n <COMPONENT>] [-f <FLAGS>]
示例:
如我們在 logcat 抓到如下列印啟動了播放器:
START u0 {act=android.intent.action.VIEW dat=file:///storage/external_storage/sda1/[4KH265_60.000fps_9Mbps]Wetek-Astra-2m.mp4 typ=video/* flg=0x13000000 cmp=com.meson.videoplayer/.VideoPlayer} from pid 15204
則我們可以使用如下 am 指令來啟動它:
am start -a android.intent.action.VIEW -d file:///storage/external_storage/sda1/[4KH265_60.000fps_9Mbps]Wetek-Astra-2m.mp4 -t video/* -f 0x13000000 -n com.meson.videoplayer/.VideoPlayer am start -n com.android.settings/.Settings //啟動原生安卓設置主頁
am broadcast -a com.chinamobile.action.KEY_PRESS_DOWN --ei keyCode 11 && am broadcast -a com.chinamobile.action.IR_TEST --es irphycode "0x008EDD22" //發送廣播
查找命令,查找文件中是否包含指定字元串並輸出該行示例:
grep -rns "repeat" /system/etc/remote1.conf //找出/system/etc/remote1.conf 所有包含 repeat 的行並展示行號
參數說明:
-a:此選項通常在復制目錄時使用,它保留鏈接、文件屬性,並復制目錄下的所有內容。其作用等於dpR參數組合。
-d:復制時保留鏈接。這里所說的鏈接相當於Windows系統中的快捷方式。
-f:覆蓋已經存在的目標文件而不給出提示。
-i:與-f選項相反,在覆蓋目標文件之前給出提示,要求用戶確認是否覆蓋,回答"y"時目標文件將被覆蓋。
-p:除復制文件的內容外,還把修改時間和訪問許可權也復制到新文件中。
-r:若給出的源文件是一個目錄文件,此時將復制該目錄下所有的子目錄和文件。
-l:不復制文件,只是生成鏈接文件。
命令示例:cp -a a parentPath/sonPath/ a對應當前文件夾下目錄或文件名 可替換為絕對路徑
移動指令,等效於 windows 的移動和重命名。
示例:
mv /data/tmp1 /data/local/tmp2 //將 data/tmp1移動到/data/local/ 並重命名為 tmp2
刪除指令,用於刪除文件和文件夾,示例:
rm -rf tmp // 刪除 tmp,建議加上-rf參數,其會刪除 tmp 所有的目錄和文件。
創建目錄。常用參數:
-p :若 mkdir -p 後接路徑包含不存在路徑則一並創建。
同步命令,常用於 cp 替換文件或指令結束後同步狀態,有益無害。
重定向,即將一個命令的輸出指向另外路徑的文件,使用覆蓋模式,即重定向到的文件若存在將覆蓋裡面的內容。
示例:
logcat > /data/xxx.log; //將 logcat輸出到/data/xxx.log;
cat /proc/kmsg > /data/kmsg.log; //將 kmsg 列印輸出重定向到/data/kmsg.log
重定向,即將一個命令的輸出指向另外路徑的文件,使用拼接模式,即重定向到的文件若存在則將輸出拼接到原文件的後面。
示例:
logcat > >/data/xxx.log; //例如我們做 netreboot的時候需要每一次開關機的 log,則會用拼接模式記錄log。
將指令放至後台靜默執行。
依次執行指令,若有指令執行失敗,則後續指令不會執行。
示例:
logcat -c && logcat //先清除 logcat 緩存再抓取 log