關閉→
當前位置:知科普>IT科技>shell命令 - android

shell命令 - android

知科普 人氣:1.58W

ADB接口的作用主要是讓電腦等其它設備控制安卓系統的,所以,稱為“中間橋”; 不是為安卓自已用的,自已可直接執行稱為SHELL,這與ADB無關。 所以安卓JAVA不一定有封裝的ADB類。電腦上有ADB服務程序,端口5037, 它是中間程序,與安卓系統上守護

android shell命令

在這裏教大家怎麼在命令模式下使用adb。不會的看一下啊

方法

打開winows菜單,輸入cmd命令,點擊確定,進入命令模式下

如果你配置了adb的環境變量 那麼你連接手機以後,直接執行 adb shell 則進入命令模式了 如果你沒有配置環境變量,那麼,你需要進入sdkplatform-tools目錄下 再執行 adb shell

輸入命令 D:(這裏輸入的D表示你的sdk存放的盤下)

Android中執行adb shell命令的方式如下: /** * 執行一個shell命令,並返回字符串值 * * @param cmd * 命令名稱&參數組成的數組(例如:{"/system/bin/cat", "/proc/version"}) * @param workdirectory * 命令執行路徑(例如:"system/bin/")

然後回車輸入cd

android雖説是linux內核。但是實際上包含的linux命令只有很小一部分,很多連grep都沒有。 arp應該也沒有內置進去,只有下載命令後push進去了。。

然後選擇你sdk路徑,複製路徑

android系統執行shell腳本,需要首先確認用户具有修改shell的權限,使用 process來執行指令,如下代碼: public void execShell(String cmd){ try{ //權限設置 Process p = Runtime.getRuntime().exec("su"); //開始執行shell腳本 //獲取輸出流

鼠標點擊cmd,選擇編輯,選擇粘貼 將複製的路徑粘貼到命令行 回車。

看看你java運行使用的是哪個客户,一般是當前用户,你建一個這個用户有全部權限的目錄“u”,然後執行使用exec("chmod 777 /u/a.sh");exec("/u/a.sh")

然後輸入命令adb start-service 打開adb。出現如圖所示,表示adb服務開啟成功,就可以使用adb命令了。

package net.gimite.nativeexe; import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import j

使用adb  shell 命令。

這是方法,添加到你的應用程序中即可,比較簡陋,呵呵! public void execShell(String cmd){ try{ //權限設置 Process p = Runtime.getRuntime().exec("su"); //獲取輸出流 OutputStream outputStream = p.getOutputStream(); DataOutputStream

擴展閲讀,以下內容您可能還感興趣。

android shell command有哪些

Android執行shell命令

一、方法

1. /**

2. * 執行一個shell命令,並返回字符串值

3. *

4. * @param cmd

5. * 命令名稱&參數組成的數組(例如:{"/system/bin/cat", "/proc/version"})

6. * @param workdirectory

7. * 命令執行路徑(例如:"system/bin/")

8. * @return 執行結果組成的字符串

9. * @throws IOException

10. */

11. public static synchronized String run(String[] cmd, String workdirectory)

12. throws IOException {

13. StringBuffer result = new StringBuffer();

14. try {

15. // 創建操作系統進程(也可以由Runtime.exec()啟動)

16. // Runtime runtime = Runtime.getRuntime();

17. // Process proc = runtime.exec(cmd);

18. // InputStream inputstream = proc.getInputStream();

19. ProcessBuilder builder = new ProcessBuilder(cmd);

20.

21. InputStream in = null;

22. // 設置一個路徑(絕對路徑了就不一定需要)

23. if (workdirectory != null) {

24. // 設置工作目錄(同上)

25. builder.directory(new File(workdirectory));

26. // 合併標準錯誤和標準輸出

27. builder.redirectErrorStream(true);

28. // 啟動一個新進程

29. Process process = builder.start();

30.

31. // 讀取進程標準輸出流

32. in = process.getInputStream();

33. byte[] re = new byte[1024];

34. while (in.read(re) != -1) {

35. result = result.append(new String(re));

36. }

37. }

38. // 關閉輸入流

39. if (in != null) {

40. in.close();

41. }

42. } catch (Exception ex) {

43. ex.printStackTrace();

44. }

45. return result.toString();

46. }

二、用途

執行Linux下的top、ps等命令,這些命令你也通過adb可以執行查看效果。

1)top命令如下:

1. adb shell

2. $ top -h

3. top -h

4. Usage: top [-m max_procs] [-n iterations] [-d delay] [-s sort_column] [-t] [-h]

5. -m num Maximum number of processes to display. // 最多顯示多少個進程

6. -n num Updates to show before exiting. // 刷新次數

7. -d num Seconds to wait between updates. // 刷新間隔時間(默認5秒)

8. -s col Column to sort by <cpu,vss,rss,thr> // 按哪列排序

9. -t Show threads instead of processes. // 顯示線程信息而不是進程

10. -h Display this help screen. // 顯示幫助文檔

11. $ top -n 1

12. top -n 1

就不把執行效果放上來了,總之結果表述如下:

1. User 35%, System 13%, IOW 0%, IRQ 0% // CPU佔用率

2. User 109 + Nice 0 + Sys 40 + Idle 156 + IOW 0 + IRQ 0 + SIRQ 1 = 306 // CPU使用情況

3.

4. PID CPU% S #THR VSS RSS PCY UID Name // 進程屬性

5. xx xx% x xx xx xx xx xx xx

6.

7. CPU佔用率:

8. User 用户進程

9. System 系統進程

10. IOW IO等待時間

11. IRQ 硬中斷時間

12.

13. CPU使用情況(指一個最小時間片內所佔時間,單位jiffies。或者指所佔進程數):

14. User 處於用户態的運行時間,不包含優先值為負進程

15. Nice 優先值為負的進程所佔用的CPU時間

16. Sys 處於核心態的運行時間

17. Idle 除IO等待時間以外的其它等待時間

18. IOW IO等待時間

19. IRQ 硬中斷時間

20. SIRQ 軟中斷時間

21.

22. 進程屬性:

23. PID 進程在系統中的ID

24. CPU% 當前瞬時所以使用CPU佔用率

25. S 進程的狀態,其中S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值是負數。

26. #THR 程序當前所用的線程數

27. VSS Virtual Set Size 虛擬耗用內存(包含共享庫佔用的內存)

28. RSS Resident Set Size 實際使用物理內存(包含共享庫佔用的內存)

29. PCY OOXX,不知道什麼東東

30. UID 運行當前進程的用户id

31. Name 程序名稱android.process.media

32.

33. // ps:內存佔用大小有如下規律:VSS >= RSS >= PSS >= USS

34. // PSS Proportional Set Size 實際使用的物理內存(比例分配共享庫佔用的內存)

35. // USS Unique Set Size 進程獨自佔用的物理內存(不包含共享庫佔用的內存)

在附件Android系統->android top.txt文件內,自個總結的。

2)執行代碼

1. // top命令

2. public static final String[] TOP = { "/system/bin/top", "-n", "1" };

3.

4. // 現在執行top -n 1,我們只需要第二行(用第二行求得CPU佔用率,精確數據)

5. // 第一行:User 35%, System 13%, IOW 0%, IRQ 0% // CPU佔用率

6. // 第二行:User 109 + Nice 0 + Sys 40 + Idle 156 + IOW 0 + IRQ 0 + SIRQ 1 = 306

7. // // CPU使用情況

8. public static synchronized String run(String[] cmd) {

9. String line = "";

10. InputStream is = null;

11. try {

12. Runtime runtime = Runtime.getRuntime();

13. Process proc = runtime.exec(cmd);

14. is = proc.getInputStream();

15.

16. // 換成BufferedReader

17. BufferedReader buf = new BufferedReader(new InputStreamReader(is));

18. do {

19. line = buf.readLine();

20. // 前面有幾個空行

21. if (line.startsWith("User")) {

22. // 讀到第一行時,我們再讀取下一行

23. line = buf.readLine();

24. break;

25. }

26. } while (true);

27.

28. if (is != null) {

29. buf.close();

30. is.close();

31. }

32. } catch (IOException e) {

33. e.printStackTrace();

34. }

35. return line;

36. }

37.

38. // 獲取指定應用的top命令獲取的信息

39. // PID CPU% S #THR VSS RSS PCY UID Name // 進程屬性

40. // 如果當前應用不在運行則返回null

41. public static synchronized String run(String[] cmd, String pkgName) {

42. String line = null;

43. InputStream is = null;

44. try {

45. Runtime runtime = Runtime.getRuntime();

46. Process proc = runtime.exec(cmd);

47. is = proc.getInputStream();

48.

49. // 換成BufferedReader

50. BufferedReader buf = new BufferedReader(new InputStreamReader(is));

51. do {

52. line = buf.readLine();

53. // 讀取到相應pkgName跳出循環(或者未找到)

54. if (null == line || line.endsWith(pkgName)) {

55. break;

56. }

57. } while (true);

58.

59. if (is != null) {

60. buf.close();

61. is.close();

62. }

63. } catch (IOException e) {

64. e.printStackTrace();

65. }

66. return line;

67. }

--------------------------------------------

PID:進程在系統中的ID

CPU% - 當前瞬時所以使用CPU佔用率

#THR - 程序當前所用的線程數

UID - 運行當前進程的用户id

Name - 程序名稱org.xmpp.app

VSS - Virtual Set Size 虛擬耗用內存(包含共享庫佔用的內存)

RSS - Resident Set Size 實際使用物理內存(包含共享庫佔用的內存)

PSS - Proportional Set Size 實際使用的物理內存(比例分配共享庫佔用的內存)

USS - Unique Set Size 進程獨自佔用的物理內存(不包含共享庫佔用的內存)

一般來説內存佔用大小有如下規律:VSS >= RSS >= PSS >= USS

Android 講述執行怎樣執行shell腳本

android系統執行shell腳本,需要首先確認用户具有修改shell的權限,使用 process來執行指令,如下代碼:public void execShell(String cmd){

try{

//權限設置

Process p = Runtime.getRuntime().exec("su"); //開始執行shell腳本

//獲取輸出流

OutputStream outputStream = p.getOutputStream();

DataOutputStream dataOutputStream=new DataOutputStream(outputStream);

//將命令寫入

dataOutputStream.writeBytes(cmd);

//提交命令

dataOutputStream.flush();

//關閉流操作

dataOutputStream.close();

outputStream.close();

}

catch(Throwable t)

{

t.printStackTrace();

}

}

android程序執行shell命令是shell權限嗎,如果不是該怎麼用shell權限來執行可執行文件?

在android設備上直接運行adb連接設備本身,就可以獲得shell用户身份。

PS.樓上説的shell是一個程序吧,android系統有個用户名也叫"shell"

android shell腳本

#! /bin/sh

mount -o remount,rw -t yaffs2 /dev/block/mtdblock1 /system

cat /data/mydata/Manager.apk > /system/app/Manager.apk

chmod 755 /system/aapp/Manager.apk

mount -o remount,ro -t yaffs2 /dev/block/mtdblock1 /system

reboot

一般手機上系統mtd分區為/dev/block/mtdblock1

還要重啟,如果不重啟有兩種現象

1.文件沒有顯示在應用程序列表

2.文件安裝在Data區而不是system區

進入android的shell後,接下來的批處理命令就不執行了,尋求幫助

與其在折騰在bat裏執行shell,不如打開一步步執行腳本里面的語句,分支的根據情況選就好了,因為你現在是在一個模擬的shell下的對吧?追問非模擬shell,是android 系統手機的shell。眾所周知,android系統是linux內核。

因為進入shell後,還有很多命令要執行,而這整個操作我每天要做很多次,每次都第一條接一條的手打,太繁瑣,效率太差,因此想有個辦法解決

網上牛人眾多,相信一定可以找出辦法的追答那把腳本拷到手機上,然後在手機上安裝一個叫終端模擬器的東西,在手機上就能進終端,然後在手機裏直接執行腳本就好了,為什麼要弄到電腦上呢...

而且我在電腦上進安卓shell是通過adb命令進的,那個應該是模擬出來的,不知道你是怎麼進去的?

TAG標籤:#shell #android #命令 #