android执行shell命令(如何让Android系统或Android应用执行shell脚本 第2页)

本文目录
- 如何让Android系统或Android应用执行shell脚本 第2页
- Android设备远程管理工具-STF
- android shell command有哪些
- 安卓设备中在执行bat脚本时abd shell自动输入密码并执行命令怎么写
如何让Android系统或Android应用执行shell脚本 第2页
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设备远程管理工具-STF
AirDroid Business是一种移动设备管理(MDM)和企业移动应用程序(EMA)解决方案,它能帮助企业管理设备、应用程序和数据。
使用AirDroid Business,企业管理员可以集中管理所有设备,例如监控设备的状态、远程锁定、擦除设备数据、安装、卸载应用程序和批量分发应用程序。此外,企业管理员可以设置设备策略并监视设备使用情况,以确保设备在符合企业安全标准的情况下进行操作。
另外,AirDroid Business还允许企业创建定制化应用程序,并将它们分发给自己的员工。企业管理员可以自己设计应用程序,应用程序将仅能被员工使用,而无法被外界下载。企业员工可以方便地访问这些应用程序来帮助提高工作效率,并可以随时随地访问企业数据。
除了设备管理和应用程序管理外,AirDroid Business还提供了其他移动企业管理解决方案,例如:
1. 远程支持:管理员可以远程控制设备,从而解决设备上出现的问题或错误。这是一种快速响应客户需求并减少对设备的干预的有效方式。
2. 设备安全:企业管理员可以设置设备策略,以确保设备的安全,并防止有害软件影响企业数据。此外,管理员可以设置远程锁定和擦除设备功能,从而保护企业数据不被泄露。
3. 设备跟踪:企业管理员可以追踪设备的位置和状态,以便在需要时快速响应,从而提高设备的安全性和管理效率。
4. 自动化操作:AirDroid Business允许企业管理员设置自动化操作,从而减少业务流程中的手动工作量。例如,自动化下发更新、应用程序安装、IT支持事件等。
AirDroid Business提供了完整的移动企业管理解决方案,以帮助企业更好地管理移动设备、应用程序和数据。【申请14天免费试用】
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;
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
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
安卓设备中在执行bat脚本时abd shell自动输入密码并执行命令怎么写
可以使用 echo 命令和管道符 | 将密码输入到 adb shell 的命令中。假设你的密码为 mypassword,需要执行的命令为 mycommand,那么可以这样写:
echo mypassword | adb shell mycomman
在上面的命令中,echo mypassword 将密码输出到标准输出流,然后通过管道符 | 将标准输出流连接到 adb shell mycommand 命令的标准输入流中,这样就实现了自动输入密码并执行命令的效果。

更多文章:
myeclipse激活了还是要激活(myeclipse为什么要激活)
2026年7月3日 22:30
phpcms 自定义字段标签模型(phpcms建议PHPCMS在评论功能上进行扩展,实现评论自定义字段)
2025年10月13日 22:30
android根据源码解决问题(如何解决android ndk r8c 老是重新编译源代码的问题)
2026年3月30日 00:30
selectorgadget下载(bootntrselector加载不成功)
2025年9月21日 13:30
如何输入string类型字符串(博图画面中string类型怎么输入)
2026年5月6日 23:15
format函数千位分隔符(15、pandas的设置数字格式,小数位数、百分号、千位分隔符)
2026年4月6日 17:30
c++多线程并发(C++的多线程里的事件是怎样定义的,事件和线程有啥联系和区别)
2026年9月20日 11:45
停止天然砂出口台湾(急求中国2010年10月11日起禁止出口的货物目录)
2025年6月19日 16:00














