❶ android超級終端如何退出top命令,top -d 50後一直按50秒在執行,請教怎麼退出呀
1.c,ctrl+z,回車
2.ctrl+z,ctrl+],回車
3.crtl+\,回車
1,2可能只是把程序轉到後台運行
3直接退出,會造成一些意想不到的後果,比如文件緩存中的內容沒有寫入文件
註:ctrl+c會直接退出adb shell
❷ android中是否有查看某個運行中程序佔用CPU的API
.一、利用Android API函數查看
1.1 ActivityManager查看可用內存。
ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo();
am.getMemoryInfo(outInfo);
outInfo.availMem即為可用空閑內存。
1.2、android.os.Debug查詢PSS,VSS,USS等單個進程使用內存信息
MemoryInfo[] memoryInfoArray = am.getProcessMemoryInfo(pids);
MemoryInfo pidMemoryInfo=memoryInfoArray[0];
pidMemoryInfo.getTotalPrivateDirty();
getTotalPrivateDirty()
Return total private dirty memory usage in kB. USS
getTotalPss()
Return total PSS memory usage in kB.
PSS
getTotalSharedDirty()
Return total shared dirty memory usage in kB. RSS
二、直接對Android文件進行解析查詢,
/proc/cpuinfo系統CPU的類型等多種信息。
/proc/meminfo 系統內存使用信息
如
/proc/meminfo
MemTotal: 16344972 kB
MemFree: 13634064 kB
Buffers: 3656 kB
Cached: 1195708 kB
我們查看機器內存時,會發現MemFree的值很小。這主要是因為,在linux中有這么一種思想,內存不用白不用,因此它盡可能的cache和buffer一些數據,以方便下次使用。但實際上這些內存也是可以立刻拿來使用的。
所以 空閑內存=free+buffers+cached=total-used
通過讀取文件/proc/meminfo的信息獲取Memory的總量。
ActivityManager. getMemoryInfo(ActivityManager.MemoryInfo)獲取當前的可用Memory量。三、通過Android系統提供的Runtime類,執行adb 命令(top,procrank,ps...等命令)查詢
通過對執行結果的標准控制台輸出進行解析。這樣大大的擴展了Android查詢功能.例如:
final Process m_process = Runtime.getRuntime().exec("/system/bin/top -n 1");
final StringBuilder sbread = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(m_process.getInputStream()), 8192);
# procrank
Runtime.getRuntime().exec("/system/xbin/procrank");
內存耗用:VSS/RSS/PSS/USS
Terms
• VSS - Virtual Set Size 虛擬耗用內存(包含共享庫佔用的內存)
• RSS - Resident Set Size 實際使用物理內存(包含共享庫佔用的內存)
• PSS - Proportional Set Size 實際使用的物理內存(比例分配共享庫佔用的內存)
• USS - Unique Set Size 進程獨自佔用的物理內存(不包含共享庫佔用的內存)
一般來說內存佔用大小有如下規律:VSS >= RSS >= PSS >= USS
USS is the total private memory for a process, i.e. that memory that is completely unique to that process.USS is an extremely useful number because it indicates the true incremental cost of running a particular process. When a process is killed, the USS is the total memory that is actually returned to the system. USS is the best number to watch when initially suspicious of memory leaks in a process.
轉載
❸ android 怎麼使用iotop
伺服器常見性能問題在於寫入數據。當伺服器寫入太多數據時,存儲分航道就會應接不暇。但是很難找出性能問題,因此本文將介紹如何分析Linux伺服器上的性能問題。
與寫入性能相關的問題通常隱藏在其他參數背後。不過在所有情況下,top命令是開始找尋問題的起點。CPU行里的wa參數顯示了你的系統等待I/O通道的時間數量。一般來說,這預示了一個緩慢的存儲通道。
❹ android 基本文件操作命令
ADB (Android Debug Bridge)
說明:下面一些命令需要有root許可權才能執行成功
快速啟動dos窗口執行adb:
1. adb.exe所在路徑添加到系統環境變數中
2. 配置快捷鍵啟動dos
進入C:\WINDOWS\system32目錄下,找到cmd.exe.
右擊菜單 "發送到" -> 桌面快捷方式。
在桌面上右擊"快捷方式 到 cmd.exe" -> "屬性" -> "快捷方式"頁
-> 游標高亮"快捷鍵" -> 按下自定義快捷鍵 (如:Ctrl + Alt + Z)
任何情況下,按下Ctrl + Alt + Z啟動dos窗口就可以執行adb命令了
-----------查看設備連接狀態 系列-----------
adb get-serialno 獲取設備的ID和序列號serialNumber
adb devices 查詢當前計算機上連接那些設備(包括模擬器和手機),輸出格式: [serialNumber] [state]
adb get-state 查看模擬器/設施的當前狀態.
說明:
序列號[serialNumber]——由adb創建的一個字元串,這個字元串通過自己的控制埠<type>-<consolePort>
唯一地識別一個模擬器/設備實例。一個序列號的例子: emulator-5554
-----------發送命令到設備 系列-----------
adb [-d|-e|-s <serialNumber>] <command>
-d 發送命令給usb連接的設備
-e 發送命令到模擬器設備
-s <serialNumber> 發送命令到指定設備
如啟動手機設備shell: adb -d shell
adb forward <local> <remote>發布埠,可以設置任意的埠號,
做為主機向模擬器或設備的請求埠。如:adb forward tcp:5555 tcp:8000
adb reboot 重啟手機
adb remount 將system分區重新掛載為可讀寫分區
adb kill-server 終止adb服務進程
adb start-server 重啟adb服務進程
adb root 已root許可權重啟adb服務
adb wait-for-device 在模擬器/設備連接之前把命令轉載在adb的命令器中
adb jdwp 查看指定的設施的可用的JDWP信息.
可以用 forward jdwp:<pid> 埠映射信息來連接指定的JDWP進程.例如:
adb forward tcp:8000 jdwp:472
jdb -attach localhost:8000
adb shell am 命令可以啟動應用程序
adb shell input text <string> 向設備輸入文本(游標所在的文本框)
adb shell input keyevent <event_code> 向設備發送按鍵事件
如:
在編輯簡訊時,往文本框輸入文本:adb shell input text "hello"
向手機發送鍵值回Home:adb shell input keyevent 3
event_code 參考view/KeyEvent.java中的 KEYCODE_*
public static final int KEYCODE_SOFT_LEFT = 1;
public static final int KEYCODE_SOFT_RIGHT = 2;
public static final int KEYCODE_HOME = 3;
public static final int KEYCODE_BACK = 4;
public static final int KEYCODE_CALL = 5;
public static final int KEYCODE_ENDCALL = 6;
-----------安裝卸載 系列-----------
adb install [-l] [-r] <file> - push this package file to the device and install it
('-l' means forward-lock the app)
('-r' means reinstall the app, keeping its data)
adb uninstall [-k] <package> - remove this app package from the device
('-k' means keep the data and cache directories)
如:
adb install d:\hello.apk
adb unstall com.huawei.hello
說明:如果帶-r選項重新安裝apk時,安裝在 /data/local/tmp/目錄下,手機重啟後還是使用原來的apk.
-----------文件操作 系列-----------
adb push <local> <remote> - file/dir to device
adb pull <remote> <local> - file/dir from device
-----------基本linux shell命令 系列-----------
adb shell [command]
ls 列出目錄下的文件和文件夾
cd 切換目錄
rm 刪除目錄和文件
cat 查看文件內容
ps 可以看那個進程再跑
ps -x [PID] 查看單個進程的狀態
top 可以看那個進程的佔用率最高
su 切換到root用戶
kill [pid] 殺死一個進程
chmod 777 <file> 修改該文件為可執行許可權
詳細使用情況可以登錄一台Linux伺服器在shell下查看幫助手冊, man <command>
-----------查看系統狀態和信息 系列-----------
adb shell procrank 查詢各進程內存使用情況
adb shell service list 查看services信息
adb shell cat /proc/meminfo 查看當前的內存情況
adb shell cat /proc/cpuinfo 查看CPU信息(硬體)
adb shell cat /proc/iomem 查看IO內存分區
adb shell getprop 列出系統所有屬性
adb shell getprop | findstr "gsm" 列出包含gsm的屬性
adb shell setprop <key> <value> 修改系統屬性
adb shell sqlite3 可以執行sql語句查看資料庫信息, 具體使用情況待調查
-----------Log 系列-----------
adb logcat [ <filter-spec> ] - View device log
1~~~~~~~~~~~查看可用日誌緩沖區:
adb logcat -b radio — 查看緩沖區的相關的信息.
adb logcat -b events — 查看和事件相關的的緩沖區.
adb logcat -b main — 查看主要的日誌緩沖區
2~~~~~~~~~~~過濾日誌輸出:
過濾器語句按照下面的格式描tag:priority ... , tag 表示是標簽, priority 是表示標簽的報告的最低等級
adb logcat *:W 顯示優先順序為warning或更高的日誌信息
adb logcat ActivityManager:I MyApp:D *:S
日誌的標簽是系統部件原始信息的一個簡要的標志。(比如:「View」就是查看系統的標簽).
優先順序有下列集中,是按照從低到高順利排列的:
V — Verbose (lowest priority)
D — Debug
I — Info
W — Warning
E — Error
F — Fatal
S — Silent (highest priority, on which nothing is ever printed)
如果你電腦上運行logcat ,相比在遠程adbshell端,你還可以為環境變數ANDROID_LOG_TAGS :輸入一個參數來設置默認的過濾
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
需要注意的是ANDROID_LOG_TAGS 過濾器如果通過遠程shell運行logcat 或用adb shell logcat 來運行模擬器/設備不能輸出日誌.
3~~~~~~~~~~~控制日誌輸出格式:
日誌信息包括了許多元數據域包括標簽和優先順序。可以修改日誌的輸出格式,所以可以顯示出特定的元數據域。可以通過 -v 選項得到格式化輸出日誌的相關信息.
brief — Display priority/tag and PID of originating process (the default format).
process — Display PID only.
tag — Display the priority/tag only.
thread — Display process:thread and priority/tag only.
raw — Display the raw log message, with no other metadata fields.
time — Display the date, invocation time, priority/tag, and PID of the originating process.
long — Display all metadata fields and separate messages with a blank lines.
當啟動了logcat ,你可以通過-v 選項來指定輸出格式:
[adb] logcat [-v <format>]
下面是用 thread 來產生的日誌格式:
adb logcat -v thread
需要注意的是你只能-v 選項來規定輸出格式 option.
4~~~~~~~~~~~Logcat命令列表
-b <buffer> 載入一個可使用的日誌緩沖區供查看,比如event 和radio . 默認值是main 。具體查看Viewing Alternative Log Buffers.
-c 清楚屏幕上的日誌.
-d 輸出日誌到屏幕上.
-f <filename> 指定輸出日誌信息的<filename> ,默認是stdout .
-g 輸出指定的日誌緩沖區,輸出後退出.
-n <count> 設置日誌的最大數目<count> .,默認值是4,需要和 -r 選項一起使用。
-r <kbytes> 每<kbytes> 時輸出日誌,默認值為16,需要和-f 選項一起使用.
-s 設置默認的過濾級別為silent.
-v <format> 設置日誌輸入格式,默認的是brief 格式,要知道更多的支持的格式,參看Controlling Log Output Format
adb bugreport - return all information from the device
that should be included in a bug report.
adb shell dmesg 查詢內核緩沖區信息
adb shell mpstate 各類信息,比如進程信息,內存信息,進程是否異常,kernnel的log等
adb shell mpcrash
adb shell mpsys 查詢所有service的狀態
-----------其他 -----------
模擬器使用鏡像sdcard
用SDK里的mksdcard工具來創建FAT32磁碟鏡像並在模擬器啟動時載入它。這樣創建鏡像:? mksdcard <size> <file>,
比如我要創建一個64M的SD卡模擬文件,文件路徑是在D:\workspace\sdcard.img
mksdcard 64000000 D:\workspace\sdcard.img
Emulator –sdcard D:\workspace\sdcard.img
或者在eclipse的run菜單的open run dialog對話框中配置啟動參數。
#top
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.
-s col Column to sort by (cpu,vss,rss,thr).
-t Show threads instead of processes.
-h Display this help screen.
********* simple selection ********* ********* selection by list *********
-A all processes -C by command name
-N negate selection -G by real group ID (supports names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session OR by effective group name
-e all processes -p by process ID
T all processes on this terminal -s processes in the sessions given
a all w/ tty, including other users -t by tty
g OBSOLETE -- DO NOT USE -u by effective user ID (supports names)
r only running processes U processes for specified users
x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full --Group --User --pid --cols --ppid
-j,j job control s signal --group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
-F extra full X registers --heading --no-heading --context
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheling class
-w,w wide output n numeric WCHAN,UID -H process hierarchy
netstat -ano 查看網路連狀態
顯示協議統計信息和當前 TCP/IP 網路連接。
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
-a 顯示所有連接和監聽埠。
-b 顯示包含於創建每個連接或監聽埠的
可執行組件。在某些情況下已知可執行組件
擁有多個獨立組件,並且在這些情況下
包含於創建連接或監聽埠的組件序列
被顯示。這種情況下,可執行組件名
在底部的 [] 中,頂部是其調用的組件,
等等,直到 TCP/IP 部分。注意此選項
可能需要很長時間,如果沒有足夠許可權
可能失敗。
-e 顯示乙太網統計信息。此選項可以與 -s
選項組合使用。
-n 以數字形式顯示地址和埠號。
-o 顯示與每個連接相關的所屬進程 ID。
-p proto 顯示 proto 指定的協議的連接;proto 可以是
下列協議之一: TCP、UDP、TCPv6 或 UDPv6。
如果與 -s 選項一起使用以顯示按協議統計信息,proto 可以是下列協議之一:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-r 顯示路由表。
-s 顯示按協議統計信息。默認地,顯示 IP、
IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的統計信息;
-p 選項用於指定默認情況的子集。
-v 與 -b 選項一起使用時將顯示包含於
為所有可執行組件創建連接或監聽埠的
組件。
interval 重新顯示選定統計信息,每次顯示之間
暫停時間間隔(以秒計)。按 CTRL+C 停止重新
顯示統計信息。如果省略,netstat 顯示當前
配置信息(只顯示一次)
pm
usage: pm [list|path|install|uninstall]
pm list packages [-f]
pm list permission-groups
pm list permissions [-g] [-f] [-d] [-u] [GROUP]
pm list instrumentation [-f] [TARGET-PACKAGE]
pm list features
pm path PACKAGE
pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] PATH
pm uninstall [-k] PACKAGE
pm enable PACKAGE_OR_COMPONENT
pm disable PACKAGE_OR_COMPONENT
The list packages command prints all packages. Options:
-f: see their associated file.
The list permission-groups command prints all known
permission groups.
The list permissions command prints all known
permissions, optionally only those in GROUP. Options:
-g: organize by group.
-f: print all information.
-s: short summary.
-d: only list dangerous permissions.
-u: list only the permissions users will see.
The list instrumentation command prints all instrumentations,
or only those that target a specified package. Options:
-f: see their associated file.
The list features command prints all features of the system.
The path command prints the path to the .apk of a package.
The install command installs a package to the system. Options:
-l: install the package with FORWARD_LOCK.
-r: reinstall an exisiting app, keeping its data.
-t: allow test .apks to be installed.
-i: specify the installer package name.
The uninstall command removes a package from the system. Options:
-k: keep the data and cache directories around.
after the package removal.
The enable and disable commands change the enabled state of
a given package or component (written as "package/class").
查看stdout 和stderr
在默認狀態下,Android系統有stdout 和 stderr (System.out和System.err )輸出到/dev/null ,
在運行Dalvik VM的進程中,有一個系統可以備份日誌文件。在這種情況下,系統會用stdout 和stderr 和優先順序 I.來記錄日誌信息
通過這種方法指定輸出的路徑,停止運行的模擬器/設備,然後通過用setprop 命令遠程輸入日誌
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start系統直到你關閉模擬器/設備前設置會一直保留,可以通過添加/data/local.prop 可以使用模擬器/設備上的默認設置
UI/軟體 試驗程序 Monkey
當Monkey程序在模擬器或設備運行的時候,如果用戶出發了比如點擊,觸摸,手勢或一些系統級別的事件的時候,
它就會產生隨機脈沖,所以可以用Monkey用隨機重復的方法去負荷測試你開發的軟體.
最簡單的方法就是用用下面的命令來使用Monkey,這個命令將會啟動你的軟體並且觸發500個事件.
$ adb shell monkey -v -p your.package.name 500
更多的關於命令Monkey的命令的信息,可以查看UI/Application Exerciser Monkey documentation page.
❺ 如何讓top 命令顯示的內存大小以M為單位
執行top之後,按住shift+E來切換顯示單位。
最上面顯示總和的內存大小是E,下面每個應用使用詳情用e,每次切換分別是KB、MB、GB、TB、PB。
第一個把KB改面MB是沒有辦法的,不過可在邊上倒三角符號上點擊篩選顯示文。第二個記事本的問題,可以新建一個注冊表文件,如:txt.reg。Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT.txt]
@="txtfile"
"Content Type"="text/plain"
[HKEY_CLASSES_ROOT.txtShellNew]
"NullFile"=""
[HKEY_CLASSES_ROOT xtfile]
@="文本文檔"
[HKEY_CLASSES_ROOT xtfileshell]
[HKEY_CLASSES_ROOT xtfileshellopen]
[HKEY_CLASSES_ROOT xtfileshellopencommand]
@="NOTEPAD.EXE %1
(5)androidtop命令詳解擴展閱讀:
使用方式:top [-] [d delay] [q] [c] [S] [s] [n]
說明:即時顯示 process 的動態
d : 改變顯示的更新速度,或是在交談式指令列( interactive command)按 s
q : 沒有任何延遲的顯示速度,如果使用者是有 superuser 的許可權則 top 將會以最高的優先序執行
c : 切換顯示模式,共有兩種模式,一是只顯示執行檔的名稱,另一種是顯示完整的路徑與名稱S : 累積模式,會將己完成或消失的子行程 ( dead child process ) 的 CPU time 累積起來
s : 安全模式,將交談式指令取消, 避免潛在的危機
❻ 什麼 是top
T代表時間,O代表場合,P代表地點。「TOP」原則要求穿戴與不同的時間、地點、場合相適應。不同的場合有不同的著裝,這是一條必須遵守的原則。 名稱的意思:頂部;山頂;頭頂;表面;上方;首位,首席;上座;最高程度,頂點,極點;精華;最重要的事物頂的等 動詞的意思:給...加蓋;達到...的頂部;高於;超過;勝過 ;向高處升;結束;達到頂點 當前多用於一些標題或排名,如:歌曲top就是歌曲排行榜,電影top就是電影排行 轉意:男同性戀中主動的一方,又稱「一」,類似於(不完全等於)耽美中的小攻一方 喜歡SM的男同中top代表主人,即s方 網路中top代表「頂」的意思。可以在支持別人的時候用。 讀棧TOP(S),引用型運算,其結果是棧頂元素;當棧S為空時結果為一特殊標志。與POP(S)不同的是TOP(S)不改變棧的狀態。 Linux性能分析工具:toptop命令是最流行Unix/Linux的性能工具之一。系統管理員可用運行top命令監視進程和Linux整體性能。 使用許可權:所有使用者 使用方式:top [-] [d delay] [q] [c] [S] [s] [n] 說明:即時顯示 process 的動態 把計? d : 改變顯示的更新速度,或是在交談式指令列( interactive command)按 s q : 沒有任何延遲的顯示速度,如果使用者是有 superuser 的許可權,則 top 將會以最高的優先序執行 c : 切換顯示模式,共有兩種模式,一是只顯示執行檔的名稱,另一種是顯示完整的路徑與名稱S : 累積模式,會將己完成或消失的子行程 ( dead child process ) 的 CPU time 累積起來 s : 安全模式,將交談式指令取消, 避免潛在的危機 i : 不顯示任何閑置 (idle) 或無用 (zombie) 的行程 n : 更新的次數,完成後將會退出 top b : 批次檔模式,搭配 「n」 參數一起使用,可以用來將 top 的結果輸出到檔案內 範例: 顯示更新十次後退出 ; top -n 10 使用者將不能利用交談式指令來對行程下命令 : top -s 將更新顯示二次的結果輸入到名稱為 top.log 的檔案里 : top -n 2 -b < top.log
❼ TOP命令列出的PR和NI列是什麼 意思
top命令用於顯示系統運行的進程信息,作用類似於windows中的任務管理器,只不過top不是圖形化的,而是顯示實時文本信息
統計信息區域的下方顯示了各個進程的詳細信息。首先來認識一下各列的含義。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
序號列名含義
PID 進程id
PPID 父進程id
RUSER Realusername
UID 進程所有者的用戶id
USER 進程所有者的用戶名
GROUP 進程所有者的組名
TTY 啟動進程的終端名。不是從終端啟動的進程則顯示為?
PR 優先順序
NInice 值。負值表示高優先順序,正值表示低優先順序
P 最後使用的CPU,僅在多CPU環境下有意義
%CPU 上次更新到現在的CPU時間佔用百分比
TIME 進程使用的CPU時間總計,單位秒
TIME+ 進程使用的CPU時間總計,單位1/100秒
%MEM 進程使用的物理內存百分比
VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
SWAP 進程使用的虛擬內存中,被換出的大小,單位kb。
RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
CODE 可執行代碼佔用的物理內存大小,單位kb
DATA 可執行代碼以外的部分(數據段+棧)佔用的物理內存大小,單位kb
SHR 共享內存大小,單位kb
nFLT 頁面錯誤次數
nDRT 最後一次寫入到現在,被修改過的頁面數。
S 進程狀態。
D= 不可中斷的睡眠狀態
R= 運行
S= 睡眠
T= 跟蹤/停止
Z= 僵屍進程
COMMAND 命令名/命令行
WCHAN 若該進程在睡眠,則顯示睡眠中的系統函數名
Flags 任務標志,參考sched.h
❽ android系統,在終端可以輸入那些命令
Android系統在超級終端下必會的命令大全
df
1.作用
df命令用來檢查文件系統的磁碟空間佔用情況,使用許可權是所有用戶。
2.格式
df [options]
3.主要參數
-s:對每個Names參數只給出佔用的數據塊總數。
-a:遞歸地顯示指定目錄中各文件及子目錄中各文件佔用的數據塊數。若既不指定-s,也不指定-a,則只顯示Names中的每一個目錄及其中的各子目錄所佔的磁碟塊數。
-k:以1024位元組為單位列出磁碟空間使用情況。
-x:跳過在不同文件系統上的目錄不予統計。
-l:計算所有的文件大小,對硬鏈接文件則計算多次。
-i:顯示inode信息而非塊使用量。
-h:以容易理解的格式印出文件系統大小,例如136kb、254mb、21GB。
-P:使用posix輸出格式。
-T:顯示文件系統類型。
4.說明
df命令被廣泛地用來生成文件系統的使用統計數據,它能顯示系統中所有的文件系統的信息,包括總容量、可用的空閑空間、目前的安裝點等。超級許可權用戶使用df命令時會發現這樣的情況:某個分區的容量超過了100%。這是因為Linux系統為超級用戶保留了10%的空間,由其單獨支配。也就是說,對於超級用戶而言,他所見到的硬碟容量將是110%。這樣的安排對於系統管理而言是有好處的,當硬碟被使用的容量接近100%時系統管理員還可以正常工作。
5.應用實例
Linux支持的文件系統非常多,包括JFS、ReiserFS、ext、ext2、ext3、ISO9660、xfs、Minx、vfat、MSDOS等。使用df -T命令查看磁碟空間時還可以得到文件系統的信息:
#df -T
文件系統 類型 容量 已用 可用 已用% 掛載點
/dev/hda7 reiserfs 5.2G 1.6G 3.7G 30% /
/dev/hda1 vfat 2.4G 1.6G 827M 66% /windows/C
/dev/hda5 vfat 3.0G 1.7G 1.3G 57% /windows/D
/dev/hda9 vfat 3.0G 2.4G 566M 82% /windows/E
/dev/hda10 ntfs 3.2G 573M 2.6G 18% /windows/F
/dev/hda11 vfat 1.6G 1.5G 23M 99% /windows/G
從上面除了可以看到磁碟空間的容量、使用情況外,分區的文件系統類型、掛載點等信息也一覽無遺。
top
1.作用
top命令用來顯示執行中的程序進程,使用許可權是所有用戶。
2.格式
top [-] [d delay] [q] [c] [S] [s] [n]
3.主要參數
d:指定更新的間隔,以秒計算。
q:沒有任何延遲的更新。如果使用者有超級用戶,則top命令將會以最高的優先序執行。
c:顯示進程完整的路徑與名稱。
S:累積模式,會將己完成或消失的子行程的cpu時間累積起來。
s:安全模式。
i:不顯示任何閑置(idle)或無用(Zombie)的行程。
n:顯示更新的次數,完成後將會退出top。
4.說明
top命令是Linux系統管理的一個主要命令,通過它可以獲得許多信息。
下面列出了詳細解釋。
Pid(Process id):進程標示號。
USER:進程所有者的用戶名。
PR:進程的優先順序別。
NI:進程的優先順序別數值。
VIRT:進程佔用的虛擬內存值。
RES:進程佔用的物理內存值。
SHR:進程使用的共享內存值。
S:進程的狀態,其中S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值是負數。
%cpu:該進程佔用的cpu使用率。
%MEM:該進程佔用的物理內存和總內存的百分比。
TIME+:該進程啟動後佔用的總的cpu時間。
Command:進程啟動的啟動命令名稱,如果這一行顯示不下,進程會有一個完整的命令行。
top命令使用過程中,還可以使用一些交互的命令來完成其它參數的功能。這些命令是通過快捷鍵啟動的。
:立刻刷新。
P:根據cpu使用大小進行排序。
T:根據時間、累計時間排序。
q:退出top命令。
m:切換顯示內存信息。
t:切換顯示進程和cpu狀態信息。
c:切換顯示命令名稱和完整命令行。
M:根據使用內存大小進行排序。
W:將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。
可以看到,top命令是一個功能十分強大的監控系統的工具,對於系統管理員而言尤其重要。但是,它的缺點是會消耗很多系統資源。
free
1.作用
free命令用來顯示內存的使用情況,使用許可權是所有用戶。
2.格式
free [-b|-k|-m] [-o] [-s delay] [-t] [-V]
3.主要參數
-b -k -m:分別以位元組(kb、mb)為單位顯示內存使用情況。
-s delay:顯示每隔多少秒數來顯示一次內存使用情況。
-t:顯示內存總和列。
-o:不顯示緩沖區調節列。
4.應用實例
free命令是用來查看內存使用情況的主要命令。和top命令相比,它的優點是使用簡單,並且只佔用很少的系統資源。通過-S參數可以使用free命令不間斷地監視有多少內存在使用,這樣可以把它當作一個方便實時監控器。
#free -b -s5
使用這個命令後終端會連續不斷地報告內存使用情況(以位元組為單位),每5秒更新一次。
❾ 如何在android程序中執行adb 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;
}