Android执行shell命令 top ps
Android执行shell命令
- /**
- * 执行一个shell命令,并返回字符串值
- *
- * @param cmd
- * 命令名称&参数组成的数组(例如:{"/system/bin/cat", "/proc/version"})
- * @param workdirectory
- * 命令执行路径(例如:"system/bin/")
- * @return 执行结果组成的字符串
- * @throws IOException
- */
- public static synchronized String run(String[] cmd, String workdirectory)
- throws IOException {
- StringBuffer result = new StringBuffer();
- try {
- // 创建操作系统进程(也可以由Runtime.exec()启动)
- // Runtime runtime = Runtime.getRuntime();
- // Process proc = runtime.exec(cmd);
- // InputStream inputstream = proc.getInputStream();
- ProcessBuilder builder = new ProcessBuilder(cmd);
- InputStream in = null;
- // 设置一个路径(绝对路径了就不一定需要)
- if (workdirectory != null) {
- // 设置工作目录(同上)
- builder.directory(new File(workdirectory));
- // 合并标准错误和标准输出
- builder.redirectErrorStream(true);
- // 启动一个新进程
- Process process = builder.start();
- // 读取进程标准输出流
- in = process.getInputStream();
- byte[] re = new byte[1024];
- while (in.read(re) != -1) {
- result = result.append(new String(re));
- }
- }
- // 关闭输入流
- if (in != null) {
- in.close();
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- return result.toString();
- }
- adb shell
- $ top -h
- top -h
- Usage: top [-m max_procs] [-n iterations] [-d delay] [-s sort_column] [-t] [-h]
- -m num Maximum number of processes to display. // 最多显示多少个进程
- -n num Updates to show before exiting. // 刷新次数
- -d num Seconds to wait between updates. // 刷新间隔时间(默认5秒)
- -s col Column to sort by <cpu,vss,rss,thr> // 按哪列排序
- -t Show threads instead of processes. // 显示线程信息而不是进程
- -h Display this help screen. // 显示帮助文档
- $ top -n 1
- top -n 1
- User 35%, System 13%, IOW 0%, IRQ 0% // CPU占用率
- User 109 + Nice 0 + Sys 40 + Idle 156 + IOW 0 + IRQ 0 + SIRQ 1 = 306 // CPU使用情况
- PID CPU% S #THR VSS RSS PCY UID Name // 进程属性
- xx xx% x xx xx xx xx xx xx
- CPU占用率:
- User 用户进程
- System 系统进程
- IOW IO等待时间
- IRQ 硬中断时间
- CPU使用情况(指一个最小时间片内所占时间,单位jiffies。或者指所占进程数):
- User 处于用户态的运行时间,不包含优先值为负进程
- Nice 优先值为负的进程所占用的CPU时间
- Sys 处于核心态的运行时间
- Idle 除IO等待时间以外的其它等待时间
- IOW IO等待时间
- IRQ 硬中断时间
- SIRQ 软中断时间
- 进程属性:
- PID 进程在系统中的ID
- CPU% 当前瞬时所以使用CPU占用率
- S 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
- #THR 程序当前所用的线程数
- VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
- RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存)
- PCY OOXX,不知道什么东东
- UID 运行当前进程的用户id
- Name 程序名称android.process.media
- // ps:内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
- // PSS Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
- // USS Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
在附件Android系统->android top.txt文件内,自个总结的。
- // top命令
- public static final String[] TOP = { "/system/bin/top", "-n", "1" };
- // 现在执行top -n 1,我们只需要第二行(用第二行求得CPU占用率,精确数据)
- // 第一行:User 35%, System 13%, IOW 0%, IRQ 0% // CPU占用率
- // 第二行:User 109 + Nice 0 + Sys 40 + Idle 156 + IOW 0 + IRQ 0 + SIRQ 1 = 306
- // // CPU使用情况
- public static synchronized String run(String[] cmd) {
- String line = "";
- InputStream is = null;
- try {
- Runtime runtime = Runtime.getRuntime();
- Process proc = runtime.exec(cmd);
- is = proc.getInputStream();
- // 换成BufferedReader
- BufferedReader buf = new BufferedReader(new InputStreamReader(is));
- do {
- line = buf.readLine();
- // 前面有几个空行
- if (line.startsWith("User")) {
- // 读到第一行时,我们再读取下一行
- line = buf.readLine();
- break;
- }
- } while (true);
- if (is != null) {
- buf.close();
- is.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return line;
- }
- // 获取指定应用的top命令获取的信息
- // PID CPU% S #THR VSS RSS PCY UID Name // 进程属性
- // 如果当前应用不在运行则返回null
- public static synchronized String run(String[] cmd, String pkgName) {
- String line = null;
- InputStream is = null;
- try {
- Runtime runtime = Runtime.getRuntime();
- Process proc = runtime.exec(cmd);
- is = proc.getInputStream();
- // 换成BufferedReader
- BufferedReader buf = new BufferedReader(new InputStreamReader(is));
- do {
- line = buf.readLine();
- // 读取到相应pkgName跳出循环(或者未找到)
- if (null == line || line.endsWith(pkgName)) {
- break;
- }
- } while (true);
- if (is != null) {
- buf.close();
- is.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return line;
- }

附件:http://down.51cto.com/data/2359794
Android执行shell命令 top ps的更多相关文章
- Android执行shell命令
一.方法 /** * 执行一个shell命令,并返回字符串值 * * @param cmd * 命令名称&参数组成的数组(例如:{"/system/bin/cat", &q ...
- Android Java执行Shell命令
最新内容建议直接访问原文:http://www.trinea.cn/android/android-java-execute-shell-commands/ 主要介绍Android或Java应用中如何 ...
- 用crontab执行shell把top命令按日期追加到文件
用crontab执行shell把top命令按日期追加到文件 详细图文解说请到本人原创百度经验http://jingyan.baidu.com/article/3052f5a1daf11197f21f8 ...
- Android 用java语言执行Shell命令
最近项目中需要用到java语言来执行shell命令,在网上查了资料, 把自己在项目里用到的命令整理成了工具类开放给大家,希望对大家有用.功能不全,后期我会慢慢添加整合. public class Sh ...
- Java 实现 ssh命令 登录主机执行shell命令
Java 实现 ssh命令 登录主机执行shell命令 1.SSH命令 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SS ...
- Linux远程执行Shell命令或脚本
## 远程执行shell命令 ssh [user]@[server] '[command]' # eg. ssh root@192.168.1.1 'uptime' ## 远程执行本地shell脚本 ...
- vim中执行shell命令
1):!command 不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容 例如 :!ls -l 特别的可以运行:!bas ...
- subprocess模块还提供了很多方便的方法来使得执行 shell 命令
现在你可以看到它正常地处理了转义. 注意 实际上你也可以在shell=False那里直接使用一个单独的字符串作为参数, 但是它必须是命令程序本身,这种做法和在一个列表中定义一个args没什么区别.而如 ...
- nodejs 执行shell 命令
有需要从前端操作服务器执行shell命令的需求 建立一个process.js文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var process = ...
随机推荐
- 160603、使用pd4ml.jar和ss_css2.jar转pdf的工具类
注意:需要导入pd4ml.jar和ss_css2.jar import java.awt.Insets;import java.io.BufferedInputStream;import java.i ...
- shell (check return of each line)(PIPESTATUS[@])and sudoer
shell result from cmdline echo $? if 0 then success ;else failure (shell 执行每部返回值,rm -rf 错误,打包不能覆盖) 我 ...
- glibc-2.23_large_bin链接方式_浅析
上面两个图应该合并为一个图,但是指针太多了,合并在一起看不清了,所以分成两张图 所有的块都通过fd和bk两个指针链接,但是为了加快查询速度,不同大小的chunk通过fd_nextsize和bk_nex ...
- 三种方案在Windows系统下安装ubuntu双系统
一.虚拟机安装(不推荐) 使用工具:Vmware 如果不是因为迫不得已,比如Mac OS对硬件不兼容,Federa安装频繁出错,各种驱动不全等等,不推荐使用虚拟机安装. 个人感觉这是一种对操作系统的亵 ...
- d3.js:数据可视化利器之快速入门
hello,data! 在进入d3.js之前,我们先用一个小例子回顾一下将数据可视化的基本流程. 任务 用横向柱状图来直观显示以下数据: var data = [10,15,23,78,57,29,3 ...
- redis之持久化操作
简介 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集(d ...
- HTML容易遗忘内容(三)
- maven 整合 ssm 异常分析
异常一:使用tomcat 7 启动没问题访问(JSP)页面就报错:org.apache.jasper.JasperException: Unable to compile class for JSP ...
- VS安装程序制作之MSI/EXE
MSI文件是Windows Installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据.MSI文件将程序的组成文件与功能关联起来 ...
- 2D游戏中的碰撞检测:圆形与矩形碰撞检测(Javascrip版)
一,原理介绍 这回有点复杂,不过看懂了还是很好理解的.当然,我不敢保证这种算法在任何情况下都会起效果,如果有同学测试时,发现出现错误,请及时联系我. 我们首先来建立一个以圆心为原点的坐标系: 然后要检 ...