一、方法
- publicstaticsynchronizedStringrun(String[]cmd,Stringworkdirectory)
- throwsIOException{
- StringBufferresult=newStringBuffer();
- try{
- ProcessBuilderbuilder=newProcessBuilder(cmd);
- InputStreamin=null;
- if(workdirectory!=null){
- builder.directory(newFile(workdirectory));
- builder.redirectErrorStream(true);
- Processprocess=builder.start();
- in=process.getInputStream();
- byte[]re=newbyte[1024];
- while(in.read(re)!=-1){
- result=result.append(newString(re));
- }
- }
- if(in!=null){
- in.close();
- }
- }catch(Exceptionex){
- ex.printStackTrace();
- }
- returnresult.toString();
- }
二、用途
执行Linux下的top、ps等命令,这些命令你也通过adb可以执行查看效果。
1)top命令如下:
- adbshell
- $top-h
- top-h
- Usage:top[-mmax_procs][-niterations][-ddelay][-ssort_column][-t][-h]
- -mnumMaximumnumberofprocessestodisplay.//最多显示多少个进程
- -nnumUpdatestoshowbeforeexiting.//刷新次数
- -dnumSecondstowaitbetweenupdates.//刷新间隔时间(默认5秒)
- -scolColumntosortby<cpu,vss,rss,thr>//按哪列排序
- -tShowthreadsinsteadofprocesses.//显示线程信息而不是进程
- -hDisplaythishelpscreen.//显示帮助文档
- $top-n1
- top-n1
就不把执行效果放上来了,总之结果表述如下:
- User35%,System13%,IOW0%,IRQ0%//CPU占用率
- User109+Nice0+Sys40+Idle156+IOW0+IRQ0+SIRQ1=306//CPU使用情况
- PIDCPU%S#THRVSSRSSPCYUIDName//进程属性
- xxxx%xxxxxxxxxxxxx
- CPU占用率:
- User用户进程
- System系统进程
- IOWIO等待时间
- IRQ硬中断时间
- CPU使用情况(指一个最小时间片内所占时间,单位jiffies。或者指所占进程数):
- User处于用户态的运行时间,不包含优先值为负进程
- Nice优先值为负的进程所占用的CPU时间
- Sys处于核心态的运行时间
- Idle除IO等待时间以外的其它等待时间
- IOWIO等待时间
- IRQ硬中断时间
- SIRQ软中断时间
- 进程属性:
- PID进程在系统中的ID
- CPU%当前瞬时所以使用CPU占用率
- S进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
- #THR程序当前所用的线程数
- VSSVirtualSetSize虚拟耗用内存(包含共享库占用的内存)
- RSSResidentSetSize实际使用物理内存(包含共享库占用的内存)
- PCYOOXX,不知道什么东东
- UID运行当前进程的用户id
- Name程序名称android.process.media
- //ps:内存占用大小有如下规律:VSS>=RSS>=PSS>=USS
- //PSSProportionalSetSize实际使用的物理内存(比例分配共享库占用的内存)
- //USSUniqueSetSize进程独自占用的物理内存(不包含共享库占用的内存)
在附件Android系统->android top.txt文件内,自个总结的。
2)执行代码
- publicstaticfinalString[]TOP={"/system/bin/top","-n","1"};
- publicstaticsynchronizedStringrun(String[]cmd){
- Stringline="";
- InputStreamis=null;
- try{
- Runtimeruntime=Runtime.getRuntime();
- Processproc=runtime.exec(cmd);
- is=proc.getInputStream();
- BufferedReaderbuf=newBufferedReader(newInputStreamReader(is));
- do{
- line=buf.readLine();
- if(line.startsWith("User")){
- line=buf.readLine();
- break;
- }
- }while(true);
- if(is!=null){
- buf.close();
- is.close();
- }
- }catch(IOExceptione){
- e.printStackTrace();
- }
- returnline;
- }
- publicstaticsynchronizedStringrun(String[]cmd,StringpkgName){
- Stringline=null;
- InputStreamis=null;
- try{
- Runtimeruntime=Runtime.getRuntime();
- Processproc=runtime.exec(cmd);
- is=proc.getInputStream();
- BufferedReaderbuf=newBufferedReader(newInputStreamReader(is));
- do{
- line=buf.readLine();
- if(null==line||line.endsWith(pkgName)){
- break;
- }
- }while(true);
- if(is!=null){
- buf.close();
- is.close();
- }
- }catch(IOExceptione){
- e.printStackTrace();
- }
- returnline;
- }
本文出自 “-_--___---_-”
博客,请务必保留此出处http://vaero.blog.51cto.com/4350852/778139
分享到:
相关推荐
1. 这只是一个例子 2. 在android上执行一个shell命令 3. 在android平台上运行过没有问题。
NULL 博文链接:https://huangwenhui5000.iteye.com/blog/1812310
本单元实现了一个伪的Shell,可以用于在Android程序中执行Shell命令,如果需要Root权限,则在执行前,调用AskForRoot方法来获取用户的Root授权,如果不再需要在Root账号下执行命令,则调用ExitRoot方法来退出Root...
一个简单的应用 给app授予root权限并执行shell命令 急需又没资源的可以直接联系我 我会尽快回复你 或者qq邮箱
APK程序执行Adb shell 命令 shell与高级语言间的调用
ExecuteShell 是一个可以让你在你的 Android 项目上方便快速使用 shell 指令的开源库
android adb shell 命令大全 1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): android create avd --name 名称 --...
1. android上调用jni 2. 在jni里c代码中调用系统shell 3. 执行shell命令 4. 返回android应用层
android执行adb shell命令源码,亲测可用!
这是我自己测试使用的列子,主要用于测试android通过jni调用shell命令
本篇文章是对Android执行shell命令进行了详细的分析介绍,需要的朋友参考下
Android中级篇之用JAVA代码执行shell命令
android shell命令工具类,可以执行单个命令 多个命令
让Android系统或Android应用执行shell脚本,方法一是:通过修改/system/init/init.c,在里面写入执行脚本的命令。方法二是:启动一个服务,让这个服务去执行脚本。
进入android shell命令模式,文档中的截图实在eclipse运行了模拟器的情况下截获的。
java中运行shell命令android.pdf
使用超级终端可实现在android端实现shell命令执行
一个用于在Android开发中 执行adb shell命令的类,可以以最高权限(su)执行。例如mount命令等
Android中级篇之用JAVA代码执行shell命令