日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

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

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

?

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

檢測環(huán)境變量
打開cmd窗口,輸入adb看效果?
如果出現(xiàn)一堆a(bǔ)db信息說明配置成功?
如果出現(xiàn)’adb’ is not recognized as an internal or external command

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

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

ls -a 列出當(dāng)前目錄下的所有文件

cd切換路徑
cd /mnt/sdcard 切換到內(nèi)存卡

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

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

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

注意:$表示普通權(quán)限用戶;#表示ROOT權(quán)限用戶。

cp復(fù)制文件
cp -f /sdcard/SDKLongRrs.apk /system/app/SDKLongRrs.apk##?
如果 cp: not found,說明該手機(jī)中cp命令不存在,換cat復(fù)制試試?
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修改文件權(quán)限
讓apk變成可以安裝的?
chmod 644 /system/app/SDKLongRrs.apk

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

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

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

啟動應(yīng)用
(1)啟動Activity?
am start -n com.googleplayapp.storerootsuaction/.MainActivity( 你得知道對應(yīng)的界面的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

?

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


clear 清除應(yīng)用數(shù)據(jù)
pm clear com.googleplayapp.storerootsuaction

cmd下直接使用adb shell命令
如果不進(jìn)入shell的,如何執(zhí)行以上命令?
cmd下面直接使用adb shell 后面跟上對應(yīng)的命令就好?
比如清除應(yīng)用數(shù)據(jù)?
adb shell pm clear com.googleplayapp.storerootsuaction

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

adb shell input text "www.baidu.com"
1
你會看到手機(jī)瀏覽器的網(wǎng)址變成百度了

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

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

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

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

關(guān)閉程序
adb shell am force-stop 包名

一次卸載多個應(yīng)用
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就可以卸載多個應(yīng)用了。

reboot重啟手機(jī)
adb reboot 重啟?
adb reboot recovery 重啟進(jìn)入recovery模式

cat查看文件
cat error.txt 這個命令可以查看error.txt文件的內(nèi)容

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

查看進(jìn)程加載的庫
可以根據(jù)進(jìn)程id,查看進(jìn)程加載了哪些庫,cat /proc/pid/maps

kill 干掉進(jìn)程
adb shell am force-stop?
作用:強(qiáng)制關(guān)閉一個應(yīng)用程序?
舉例: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可以查看到進(jìn)程的pid?
kill -s 9 pid干掉指定pid的進(jìn)程?
批量干掉進(jìn)程?
busybox pkill -9 父進(jìn)程?
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三個進(jìn)程

查看內(nèi)存信息
看手機(jī)內(nèi)存信息cat /proc/meminfo?
查看應(yīng)用的內(nèi)存信息 dumpsys meminfo 應(yīng)用包名

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

過濾grep 和findstr
引用塊內(nèi)容

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

adb shell ps|findstr baidu
1
這個命令找出手機(jī)上正在運(yùn)行并且這個名字包含baidu的進(jìn)程

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

對應(yīng)的android或者linux中的shell命令是grep

ps|gerp baidu
1
引用塊內(nèi)容

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

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

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

adb獲取手機(jī)參數(shù)
adb獲取手機(jī)所有參數(shù)參考這個?
adb shell getprop?
adb獲取iccid?
service call iphonesubinfo 4(需要權(quán)限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的方式”獲取正在運(yùn)行的進(jìn)程
// 1,遍歷”/proc”文件夾下面的文件夾,其中有些”文件夾名稱”就是進(jìn)程id(PID)?
ls /proc?
// 2,cat命令獲取對應(yīng)進(jìn)程的名字(cat /proc/PID/cmdline)?
cat /proc/1/cmdline 得到結(jié)果/init

查看進(jìn)程具體的信息
(實例:12073是要查看的進(jìn)程的PID)?
cat /proc/12073/maps 查看進(jìn)程的文件結(jié)構(gòu)?
cat /proc/12073/status 查看進(jìn)程的狀態(tài)

通過packages.xml文件查看app安裝信息
/data/system/packages.xml文件中,找到你應(yīng)用相關(guān)內(nèi)容?
我在小米上使用cat /data/system/packages.xml命令得到以下數(shù)據(jù)

<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//啟動

多設(shè)備選擇
adb devices//顯示處于調(diào)式模式的devices?
adb -s emulator-5554 shell??//表示選擇5554模擬器的進(jìn)入shell?
42.busybox的安裝?


查看進(jìn)程優(yōu)先級
假設(shè)要查看程序com.test.app.a的進(jìn)程優(yōu)先級?
adb shell(進(jìn)入shell)?
ps|grep com.test.app.a(列出這個進(jìn)程)

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

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

findstr 和grep過濾搜索
1)cmd下搜索包名為com.linux.test的進(jìn)程?
adb shell ps|findstr /i “com.linux.test”?
2)shell下面搜索?
先使用adb shell進(jìn)去,然后使用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放入手機(jī)中

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

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
修改完畢,手機(jī)隨便連接一個wifi或者打開數(shù)據(jù)流量就可以上google和facebook等等網(wǎng)站了。

查看端口
顯示已連接的端口:netstat -ntup?
顯示正監(jiān)聽的端口:netstat -ntupl?
查詢端口進(jìn)程應(yīng)關(guān)系cat /proc/net/tcp6?
?


如果查詢14752端口被那個進(jìn)程占用??
(1)16進(jìn)制39A0=10進(jìn)制14752;?
(2)39A0對應(yīng)的進(jìn)程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的是應(yīng)用程序創(chuàng)建的用戶。?
ps的第一列是uid,大于10000的uid會以u0_a開頭,10096 顯示為u0_a96,最后一列就是進(jìn)程名。

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

轉(zhuǎn)載于:https://www.cnblogs.com/jodyccf/p/11150799.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。