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 = ...
随机推荐
- fullpage.js全屏滚动插件使用方法
在移动端经常会用到全屏滚动插件,实现常见H5活动页的效果,fullpage是一个很不错的jquery全屏滚动插件 fullpage.js插件的API:http://www.dowebok.com/77 ...
- navicat自动生成DDL语句
场景:当我们在开发库修改表结构之后,需要把这些表结构的变化同步更新到生产库,这时候可以在Navicat中copy表结构变更的SQL语句. 当你点击了“设计表”进行修改表结构,在保存表结构之前点击“SQ ...
- netty4.x 实现接收http请求及响应
参考 netty4.x 实现接收http请求及响应 - En taro tassadar - CSDN博客 https://blog.csdn.net/sinat_39783636/article/d ...
- 关于Android项目隐藏标题栏的方法总结
1.在代码中添加这么一行代码 this.requestWindowFeature(Window.FEATURE_NO_TITLE); 注意:这段代码需要写在setContentView()之前,否则会 ...
- 【pentaho】【kettle】【Data Integration】试用
要做数据分析,领导让研究一下kettle. 先占个坑. 这里有个3.0的文档: http://wenku.baidu.com/link?url=hvw_cOBIXLXSGvftkGhXQic3CLC7 ...
- Web应用扩展系列(1):架构篇(转)
原文:Web应用扩展系列(1):架构篇 在这篇文章中,我将尽量涵盖Web应用扩展或性能调优时可能会遇到的一些架构问题. 首先,让我们来统一一些名词或项目的概念,下文中我将列举在扩展Web应用时可能会遇 ...
- Git Extension工具安装及使用
以下界面所示的三个工具,如果没安装过,则勾上让其安装.MsysGit为Git的Windows版本,必须要安装:Kdiff为对比/合并工具,可选安装,可以换为使用其它的相关工具:最后一个Windows ...
- Java中的并发编程集合使用
一.熟悉Java自带的并发编程集合 在java.util.concurrent包里有很多并发编程的常用工具类. package com.ietree.basicskill.mutilthread.co ...
- 6 TensorFlow实现cnn识别手写数字
------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ...
- [转]linux shell 获取当前正在执行脚本的绝对路径
原文链接:http://sexywp.com/bash-how-to-get-the-basepath-of-current-running-script.htm 常见的一种误区,是使用 pwd 命令 ...