日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android执行shell命令

發布時間:2025/3/8 Android 74 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android执行shell命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?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();?
  • }?

  • 二、用途 執行Linux下的top、ps等命令,這些命令你也通過adb可以執行查看效果。 1)top命令如下:
  • 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文件內,自個總結的。

    2)執行代碼
  • //?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;?
  • }?
  • 三、后記 這次相關的僅有的那個工程好像不能放上來了==。 好吧,把我當時整理的一點點相關資料放附件了:包含《Android系統》文件夾和《深入研究java.lang.ProcessBuilder類.doc》。 文件夾內容如下:

    ?

    ps:現在有個可以看的小工程了,請移至《Android VNC Server New》!

    附件:http://down.51cto.com/data/2359794



    ? ? ?本文轉自winorlose2000 51CTO博客,原文鏈接:http://blog.51cto.com/vaero/778139,如需轉載請自行聯系原作者





    總結

    以上是生活随笔為你收集整理的Android执行shell命令的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 一区二区三区在线免费观看 | 欧美综合久久 | 亚洲视频456 | 日本一区二区免费在线观看 | 欧美福利视频导航 | 亚洲欧美国产精品久久久久久久 | 91人人澡人人爽 | 青青青手机视频在线观看 | 日韩小视频在线观看 | 欧美怡红院一区二区三区 | 中国在线观看免费视频 | 日本黄视频在线观看 | 日韩欧美一区二区在线 | 免费在线观看网址入口 | 欧美日韩高清丝袜 | 日韩中文娱乐网 | 俄罗斯黄色大片 | www.av网址 | 亚洲av无码乱码国产精品久久 | 亚洲美女视频一区 | 日韩一页 | 欧美极品喷水 | 色图av| 91亚洲一线产区二线产区 | 久久九九精品 | 深夜视频在线看 | 国产又粗又猛又爽又黄的网站 | 国产床上视频 | 韩国三级hd中文字幕叫床浴室 | 欧洲一区二区三区四区 | 日韩精品亚洲一区 | 美女搡bbb又爽又猛又黄www | 国产免费脚交足视频在线观看 | 国产精品一区二区三区线羞羞网站 | 久久精品视频网站 | 少妇学院在线观看 | 中文字幕第一页亚洲 | 一二三区免费 | 欧美性受xxxx黑人猛交88 | 狼人av在线| 中文字幕在线观看高清 | 丰满孕妇性春猛交xx大陆 | 日本视频在线免费观看 | 国产女人在线视频 | 国外精品视频 | 久久九九精品视频 | 亚洲一区国产 | 哪里可以看免费毛片 | 亚洲色图欧美激情 | 制服丝袜先锋 | 被绑在床强摁做开腿呻吟 | 在线观看h视频 | 成人久久免费 | 日韩在线播放中文字幕 | 波多野结衣一二三四区 | 日本护士取精xxxxxhd | 国产精品后入内射日本在线观看 | 韩国av一区| 人妖videosex高潮另类 | 绝顶高潮合集videos | 韩国黄色网址 | 色婷婷av国产精品 | 日韩精品播放 | 在线免费视频一区 | 伊人伦理 | 99爱这里只有精品 | 中文字幕在线观看亚洲 | 日韩精品免费一区 | 国产精品美女在线观看 | 亚洲国产成人自拍 | 久久视频黄色 | 女人又爽又黄免费女仆 | 999资源站| 天堂中文网在线 | 午夜资源网 | 丝袜中文字幕 | 亚洲精品一区二区三区不卡 | 人妻激情文学 | 青青草一区| 蜜桃av导航 | 欧美激情视频在线 | 双性人妖互交localhost | 欧美视频在线观看一区二区 | 9色91| 成人做爰免费视频免费看 | 性感美女一区 | 热播之家 | 国产叼嘿视频在线观看 | 国产美女福利在线 | 综合激情四射 | 日本成人激情视频 | 国产电影一区二区三区爱妃记 | 精品伦一区二区三区 | 清纯粉嫩极品夜夜嗨av | av一区二区免费 | 哺乳期av | 久久九九久久九九 | 亚洲国产一区二区在线 | 在线免费观看一区二区 |