日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

学习转载:Android中常用shell命令详解

發布時間:2024/1/18 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习转载:Android中常用shell命令详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/Z_HUALIN/article/details/77878609

?

設置adb環境變量
其實就是將adb.exe的路徑放到Path中,目的是cmd直接可以使用adb命令?
比如我的adb.exe路徑G:\tools\adt-bundle\sdk\platform-tools\adb.exe?
我的電腦》高級》設置》環境變量》Path》增加G:\tools\adt-bundle\sdk\platform-tools?
(注意不要adb.exe)

檢測環境變量
打開cmd窗口,輸入adb看效果?
如果出現一堆adb信息說明配置成功?
如果出現’adb’ is not recognized as an internal or external command

進入shell
adb shell?
如果有多個設備怎么辦??
adb devices查看你的設備;?
adb -s xiaomi shell:-s命令表示選擇設備,這里是選擇xiaomi設備進shell

ls查看文件
ls -l /system/app/Demo.apk?
rwxr-xr-x root root 48550 2016-02-22 21:55 CertificateInstallerProviders.apk?
Linux的文件基本上分為三個屬性:可讀(r),可寫(w),可執行(x)。?
對rwxr-xr-x 的解讀:?
rwx(Owner)r-x(Group)r-x(Other)?
這個例子表示的權限是:使用者自己可讀,可寫,可執行;同一組的用戶可讀,不可寫,可執行;其它用戶可讀,不可寫,可執行。?
命令中r=4,w=2,x=1,比如?
chmod 644 system/app/Demo.apk命令執行以后,查看這個文件發現權限被修改了?
ls -l /system/app/Demo.apk?
-rw-r–r– root root 48550 2016-02-22 21:55 Demo.apk(將這個apk放在了system下面,而且還讓它具有root權限了)

ls -a 列出當前目錄下的所有文件

cd切換路徑
cd /mnt/sdcard 切換到內存卡

mount掛載
mount -o remount,rw /system 將/system目錄掛載,設置為可以讀寫?
實例:?
127|shell@android:/mnt/sdcard $ mount -o remount,rw /system?
mount -o remount,rw /system?
mount: Operation not permitted?
如果出現mount: Operation not permitted說明沒有root權限

su獲取ROOT權限
前提是你的手機已經root了?
su命令表示切換ROOT用戶下運行(就是說你有了root權限啦)?
下面先獲取root,獲取root成功的時候$變成了#

255|shell@android:/mnt/sdcard $ su?
su?
root@android:/storage/sdcard0 # mount -o remount,rw /system?
mount -o remount,rw /system?
此時在執行掛載就可以成功

注意:$表示普通權限用戶;#表示ROOT權限用戶。

cp復制文件
cp -f /sdcard/SDKLongRrs.apk /system/app/SDKLongRrs.apk##?
如果 cp: not found,說明該手機中cp命令不存在,換cat復制試試?
127|root@android:/storage/sdcard0 # cat /sdcard/SDKLongRrs.apk> /system/app/SDKLongRrs.apk?
rs.apk> /system/app/SDKLongRrs.apk <?
右箭頭>指明拷貝的方向哈

獲取md5值
md5 /system/app/SDKLongRrs.apk?
獲取一個目錄下所有文件的md5?
md5 /system/app/*

chmod修改文件權限
讓apk變成可以安裝的?
chmod 644 /system/app/SDKLongRrs.apk

pm安裝apk卸載應用
pm install -r /system/app/SDKLongRrs.apk?
pm uninstall com.baidu.map.location

cmd安裝apk卸載應用
adb install C:\Users\Administrator\Desktop\Root.apk?
這個將電腦桌面的Root.apk安裝到手機上?
有可能不成功,直接看信息,對照英文找原因,比如小米的需要點擊允許安裝,在比如空間不足,在比如應用已經存在手機上

adb uninstall com.baidu.map.location(你需要知道應用的包名哈)

啟動應用
(1)啟動Activity?
am start -n com.googleplayapp.storerootsuaction/.MainActivity( 你得知道對應的界面的Activity路徑以及包名哈)

adb shell am start -n com.test.provider/.MainActivity
1
2
(2)啟動service

<service
android:name=".MyService"
android:description="@string/Desciption"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.nandhan.myservice" />
</intent-filter>
</service>
1
2
3
4
5
6
7
8
9
adb shell am startservice com.nandhan.myservice/.MyService

?

查看正在運行的 Services
adb shell dumpsys activity services [<packagename>]
包名是必須的、不需要寫完整的包名、支持模糊匹配
例如adb shell dumpsys activity services com.linux.example
1
2
3
查看正在運行的 activity
adb shell dumpsys activity [<packagename>]
包名是必須的、不需要寫完整的包名、支持模糊匹配
例如adb shell dumpsys activity com.linux.example
1
2
3


clear 清除應用數據
pm clear com.googleplayapp.storerootsuaction

cmd下直接使用adb shell命令
如果不進入shell的,如何執行以上命令?
cmd下面直接使用adb shell 后面跟上對應的命令就好?
比如清除應用數據?
adb shell pm clear com.googleplayapp.storerootsuaction

電腦輸入文字到手機
比如手機要上百度,手機打開瀏覽器,點擊地址欄,輸入法切換到英文,cmd命令

adb shell input text "www.baidu.com"
1
你會看到手機瀏覽器的網址變成百度了

文件傳輸
電腦復制文件到手機?
方法1:cmd下面使用push命令?
adb push “C:\Users\Administrator\Downloads\Root.apk” /mnt/sdcard/goodRoot/?
將電腦下載里面的Root.apk復制到手機sdcard的goodRoot文件夾下面?
方法2:直接使用eclipse里面的File Explorer(對android程序員而言的哈)?
復制手機文件到電腦?
adb pull /sdcard/packages.xml C:\Users\linux\Desktop\packages.xml

快速獲取文件路徑
打開cmd,將文件拖進來,你就可以看到文件的路徑哈

eclipse中File Explorer的使用
手機調試模式連接電腦,使用File Explorer可以查看手機文件;?
root以后的手機可以查看data下面的文件?
如果已經root,但是data打不開,使用以下命令?
cmd下面?
adb shell?
shell@android:/ $ su root?
chmod -R 755 /data?
(R必須大寫,linux命令區分大小寫的,cmd命令不區分大小寫,shell命令是一種linux命令)?
點擊這里查看chmod 755的含義

rm 刪除命令
rm -r /mnt/sdcard/AppFolder/a.mp3 移除a.mp3文件?
刪除文件夾的時候需要加上-r參數?
rm -r /mnt/sdcard/AppFolder

關閉程序
adb shell am force-stop 包名

一次卸載多個應用
adb uninstall com.android.a
adb uninstall com.android.b
adb uninstall com.android.c
adb uninstall com.android.d
adb uninstall com.android.e
1
2
3
4
5
將這多條命令寫成一個.bat文件,直接點擊bat就可以卸載多個應用了。

reboot重啟手機
adb reboot 重啟?
adb reboot recovery 重啟進入recovery模式

cat查看文件
cat error.txt 這個命令可以查看error.txt文件的內容

批量執行多條adb shell命令
adb命令帶參數,cmd下面帶上參數,先獲取su,然后做其他事?
演示在cmd下面可以直接使用su權限來刪除/system/bin/testa文件和/system/xbin/testb?
adb shell “su -c ‘rm -r -f /system/bin/testa’”?
adb shell “su -c ‘rm -r -f /system/xbin/testb’”?
如果是直接一條條執行shell命令將是下面的4條命令?
adb shell?
su?
rm -r -f /system/bin/testa?
rm -r -f /system/xbin/testb?
如何批量執行多條命令呢?
寫一個.bat文件,文件內容如下:?
adb shell “su -c ‘rm -r -f /system/bin/testa’”?
adb shell “su -c ‘rm -r -f /system/xbin/testb’”?
pause?
保存為bat文件,直接點擊執行.(windows系統下)。?
(pause表示不關閉cmd窗口,這樣就可以看到執行的結果了)

查看進程加載的庫
可以根據進程id,查看進程加載了哪些庫,cat /proc/pid/maps

kill 干掉進程
adb shell am force-stop?
作用:強制關閉一個應用程序?
舉例:adb shell am force-stop com.lt.test?
adb shell am force-stop比使用 kill -9 要方便?
參考http://blog.sina.com.cn/s/blog_6294abe70101275q.html?
ps可以查看到進程的pid?
kill -s 9 pid干掉指定pid的進程?
批量干掉進程?
busybox pkill -9 父進程?
ps?
USER PID PPID VSIZE RSS WCHAN PC NAME?
u0_a145 10608 134 292960 26816 ffffffff 4019ca70 S com.ex.thre?
u0_a146 10755 134 302420 32152 ffffffff 4019ca70 S com.ex.two?
使用kill -s 9 134,就可以干掉 PID =134. PID =10608. PID =10755三個進程

查看內存信息
看手機內存信息cat /proc/meminfo?
查看應用的內存信息 dumpsys meminfo 應用包名

查看應用是否安裝
查看應用的安裝路徑 pm path 應用包名?
獲取手機上已經安裝的所有的程序 pm list packages

過濾grep 和findstr
引用塊內容

在windows上直接使用findstr來過濾你想要的信息

adb shell ps|findstr baidu
1
這個命令找出手機上正在運行并且這個名字包含baidu的進程

//下面的寫法也對
adb shell ps baidu
adb shell ps|findstr -i baidu
1
2
3
引用塊內容

對應的android或者linux中的shell命令是grep

ps|gerp baidu
1
引用塊內容

提示 :有的手機上沒有grep命令,這時候可以采用findstr;或者往手機里放一個busybox文件,然后使用busybox grep命令,效果一樣

查看運行的程序
查看手機正在運行的程序 ps?
查看自己的程序是否在運行 ps | grep 應用包名?
如果沒有grep命令,可以放置一個busybox工具到手機?
查看360對應的程序是否在運行 ps | busybox grep m.qihoo*

刪除多個文件
cd dir?
rm * 刪除dir中所有文件

adb獲取手機參數
adb獲取手機所有參數參考這個?
adb shell getprop?
adb獲取iccid?
service call iphonesubinfo 4(需要權限android.permission.READ_PHONE_STATE)?
adb獲取imei?
adb -d shell dumpsys iphonesubinfo?
adb獲取androidid?
androidid藏在這里[net.hostname]: [android-b33f3ac550112627]?
命令:getprop net.hostname?
adb獲取serialno?
命令:getprop ro.boot.serialno或者getprop ro.serialno?
adb獲取imei?
service call iphonesubinfo 1?
更多信息參考這個?
http://stackoverflow.com/questions/27002663/adb-shell-dumpsys-iphonesubinfo-not-working-since-android-5-0-lollipop

使用”讀取proc的方式”獲取正在運行的進程
// 1,遍歷”/proc”文件夾下面的文件夾,其中有些”文件夾名稱”就是進程id(PID)?
ls /proc?
// 2,cat命令獲取對應進程的名字(cat /proc/PID/cmdline)?
cat /proc/1/cmdline 得到結果/init

查看進程具體的信息
(實例:12073是要查看的進程的PID)?
cat /proc/12073/maps 查看進程的文件結構?
cat /proc/12073/status 查看進程的狀態

通過packages.xml文件查看app安裝信息
/data/system/packages.xml文件中,找到你應用相關內容?
我在小米上使用cat /data/system/packages.xml命令得到以下數據

<package name="com.trafficctr.miui" codePath="/system/app/TrafficControl" nativeLibraryPath="/system/app/TrafficControl/lib" flags="540229" ft="152fdda2cc0" it="152fdda2cc0" ut="152fdda2cc0" version="29" userId="10069">
.....
</package>
1
2
3
顯然name就是包名,codePath就是安裝的路徑

使用shell啟動和終止模擬器
adb shell stop//停止?
adb shell start//啟動

多設備選擇
adb devices//顯示處于調式模式的devices?
adb -s emulator-5554 shell??//表示選擇5554模擬器的進入shell?
42.busybox的安裝?


查看進程優先級
假設要查看程序com.test.app.a的進程優先級?
adb shell(進入shell)?
ps|grep com.test.app.a(列出這個進程)

u0_a37 28155 164 909516 36900 ffffffff b75baa27 S com.test.app.a
1
cat /proc/28155/oom_adj(獲取這個進程的adj值)?
adj值則在ProcessList中定義,adj的取值范圍[-17,16],取值越大說明優先級越低。adj取值說明參考這里

dumpsys 查看內存,cpu,電量信息
1)查看所有內存信息?
命令:dumpsys meminfo?
2)查看某個包的內存信息?
命令:dumpsys pkg_name?
3)查看CPU信息?
命令:adb shell dumpsys cpuinfo?
4)查看電量信息?
命令:dumpsys battery?
參考這里:Android 通過adb shell命令查看內存,CPU,啟動時間,電量等信息

findstr 和grep過濾搜索
1)cmd下搜索包名為com.linux.test的進程?
adb shell ps|findstr /i “com.linux.test”?
2)shell下面搜索?
先使用adb shell進去,然后使用grep命令過濾?
ps|grep “com.linux.test”

查看最上層成activity名字
adb shell dumpsys activity | findstr "mFocusedActivity"
1
查看最上層窗口信息
adb shell dumpsys window windows | findstr mCurrent
1
修改host翻墻
1,電腦下載一個android版本的hosts,地址http://laod.cn/hosts/2016-google-hosts.html?
2,將hosts放入手機中

adb push C:\Users\Administrator\Downloads\Android安卓跟Linux系列\hosts /data/local/tmp/
3138 KB/s (154351 bytes in 0.048s)
1
2
3,修改hosts文件(需要root權限)

C:\Users\Administrator>adb shell
shell@android:/ $ su
su
shell@android:/ # mount -o remount,rw /system
mount -o remount,rw /system
shell@android:/ # cat /data/local/tmp/hosts>/system/etc/hosts
cat /data/local/tmp/hosts>/system/etc/hosts
shell@android:/ # ls -l /system/etc/hosts
ls -l /system/etc/hosts
-rw-r--r-- root root 154351 2016-09-28 17:53 hosts
shell@android:/ #
1
2
3
4
5
6
7
8
9
10
11
修改完畢,手機隨便連接一個wifi或者打開數據流量就可以上google和facebook等等網站了。

查看端口
顯示已連接的端口:netstat -ntup?
顯示正監聽的端口:netstat -ntupl?
查詢端口進程應關系cat /proc/net/tcp6?
?


如果查詢14752端口被那個進程占用??
(1)16進制39A0=10進制14752;?
(2)39A0對應的進程ID(也叫uid)是10096?
sl local_address remote_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode?
0: 00000000000000000000000000000000:39A0 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 10096 0 8887 1 00000000 100 0 0 2 -1?
(3)使用ps命令?
在android中,uid大于10000的是應用程序創建的用戶。?
ps的第一列是uid,大于10000的uid會以u0_a開頭,10096 顯示為u0_a96,最后一列就是進程名。

adb發送廣播
adb shell am broadcast -n com.lt.test/.MyBroadcast?
adb shell am broadcast -a “MyBroadcastAction”

轉載于:https://www.cnblogs.com/jodyccf/p/11150799.html

總結

以上是生活随笔為你收集整理的学习转载:Android中常用shell命令详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。