TOP命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況。
top程序對運行的系統提供一個動態的實時的監控。它能夠顯示系統的總體信息和一些正被Linux內核管 理的任務。它所顯示的系統總體信息的樣式以及任務信息顯示的樣式,順序和大小都是可以由用戶配置,而且配置信息可以重啓後永久生效。top能夠對進程操作提供一個有限的交互式界面,對個性化配置提供更多擴展性的界面。
一. TOP前五行統計信息
統計信息區前五行是系統整體的統計信息。
1. 第一行是任務隊列信息
同 uptime 命令的執行結果:
[root@localhost ~]# uptime
13:22:30 up 8 min, 4 users, load average: 0.14, 0.38, 0.25
其內容如下:
12:38:33 | 當前時間 |
up 50days | 系統運行時間,格式爲時:分 |
1 user | 當前登錄用戶數 |
load average: 0.06, 0.60, 0.48 | 系統負載,即任務隊列的平均長度。 三個數值分別爲 1分鐘、5分鐘、15分鐘前到現在的平均值。 |
2. 第二、三行爲進程和CPU的信息
當有多個CPU時,這些內容可能會超過兩行。內容如下:
Tasks: 29 total | 進程總數 |
1 running | 正在運行的進程數 |
28 sleeping | 睡眠的進程數 |
0 stopped | 停止的進程數 |
0 zombie | 殭屍進程數 |
Cpu(s): 0.3% us | 用戶空間佔用CPU百分比 |
1.0% sy | 內核空間佔用CPU百分比 |
0.0% ni | 用戶進程空間內改變過優先級的進程佔用CPU百分比 |
98.7% id | 空閒CPU百分比 |
0.0% wa | 等待輸入輸出的CPU時間百分比 |
0.0% hi | |
0.0% si |
3. 第四五行爲內存信息。
內容如下:
Mem: 191272k total | 物理內存總量 |
173656k used | 使用的物理內存總量 |
17616k free | 空閒內存總量 |
22052k buffers | 用作內核緩存的內存量 |
Swap: 192772k total | 交換區總量 |
0k used | 使用的交換區總量 |
192772k free | 空閒交換區總量 |
123988k cached | 緩衝的交換區總量。 內存中的內容被換出到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋, 該數值即爲這些內容已存在於內存中的交換區的大小。相應的內存再次被換出時可不必再對交換區寫入。 |
二. 進程信息
列名 | 含義 |
PID | 進程id |
PPID | 父進程id |
RUSER | Real user name |
UID | 進程所有者的用戶id |
USER | 進程所有者的用戶名 |
GROUP | 進程所有者的組名 |
TTY | 啓動進程的終端名。不是從終端啓動的進程則顯示爲 ? |
PR | 優先級 |
NI | nice值。負值表示高優先級,正值表示低優先級 |
P | 最後使用的CPU(在SMP環境中),僅在多CPU環境下有意義,用一個數字代表最後一次使用的CUP. |
%CPU | 上次更新到現在的CPU時間佔用百分比(當前任務共享從上次屏幕刷新時的CPU時間,以CPU總時間的百分比表示。在一個真實的SMP環境中,如果Irix Mode被設置成off,top將工作在Solaris Mode下,即一個任務的CPU利用率將以CPU的總數分開顯示,要切換Irix/Solaris Mode,按“I"就行。) |
TIME | 進程使用的CPU時間總計,單位秒(當前任務從開始時使用的CPU時間總和,當Cumulative mode開啓時,top將列出每個進程和它的死了的子進程使用的CPU時間。) |
TIME+ | 進程使用的CPU時間總計,單位1/100秒(顯示到百分之一秒) |
%MEM | 進程使用的物理內存百分比(一個任務當前使用的可用的物理內存百分比) |
VIRT(Virt Image (kb)) | 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES(當期任務使用的總的虛擬內存。它包括所有的執行代碼,數據,共享庫,加上被置換出的頁面和被映射但是沒被使用的頁面。) |
SWAP | 進程使用的虛擬內存中,被換出的大小,單位kb。(在一個任務中呈現的而沒有駐留的內存。這種內存是已經被置換出但是可能包含另外的非駐留的內存。這個字段的值是從虛擬內存中減去物理內存所得的。) |
RES(Resident size | 進程使用的、未被換出的物理內存大小,一個任務使用的未被置換出的物理內存。單位kb。RES=CODE+DATA |
CODE(code size (kb)) | 可執行代碼佔用的物理內存大小,用於可執行代碼的虛擬內存總額,單位kb |
DATA(Data+Stack size (kb)) | 可執行代碼以外的部分(數據段+棧)佔用的物理內存大小,單位kb,用於除了可執行代碼以爲的虛擬內存總額 |
SHR(Shared Mem size (kb)) | 一個任務使用的共享內存總額。它反映了可以被其他進程共享的內存總額,單位kb |
nFLT(Page Fault count) | 頁面錯誤次數(一個任務出現的主要的頁面錯誤的數量。當一個進程試圖對當前未出現在地址空間的虛擬內存進行讀寫操作時,這將產生一個頁面錯誤。) |
nDRT(Dirty Pages count) | 最後一次寫入到現在,被修改過的頁面數。(從上一次被寫入到磁盤且被修改的頁面數量) |
S | 進程狀態。 |
COMMAND | 命令名/命令行 |
WCHAN | 若該進程在睡眠,則顯示睡眠中的系統函數名 |
Flags | 任務標誌,參考 sched.h |
2.1 用快捷鍵更改顯示內容。
(1)更改顯示內容通過 f鍵可以選擇顯示的內容。
按 f 鍵之後會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最後按回車鍵確定。
(2)按o鍵可以改變列的顯示順序。
按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最後按回車鍵確定。
按大寫的 F 或 O 鍵,然後按 a-z 可以將進程按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。
設置完按回車返回界面。
三. 命令使用
詳細內容可以參考MAN 幫助文檔。這裏列舉部分內容:
命令格式:
top [-] [d] [p] [q] [c] [C] [s][S][H][u] [n]
參數說明:
-d: 設置延遲時間。指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。
-q:該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶權限,那麼top將以儘可能高的優先級運行。
-p通過指定監控進程ID來僅僅監控某個進程的狀態, 監視指定PID的進程,可以以-p1 -p2 -p67 的格式最多輸入20次,也可以以-p 1,2,3,4,5,6,7的格式最多跟20個PID。如果想恢復正常顯示,即顯示所有進程,不必終止或重啓top。按住“=”就可以切換了。
-b 批處理模式操作
開啓top工作在批處理模式,這樣在需要將top的輸出信息輸出 到其他程序或文件時非常有用。在這種模式下,top不接受任何輸入操作,直到通過-n 設置的重複次數後,或者退出top才終止。
在終端中輸入top -b top將不斷重複地顯示任務信息,知道按Ctrl+C終止爲止,在終端中輸入top -b -n 10 ,top將顯示10次後終止,也就是分10個批次顯示完後就退出。
-c 命令行/程序名 開關,顯示整個命令行而不只是顯示命令名
設置屏幕刷新的延遲時間,如在命令行輸入top -d 0.09 則屏幕將每隔0.09秒刷新。若原來的個人配置文件設置的是每隔3秒將不生效。延遲時間可以設置很小的數,但是不能是負數。
-H線程開關,在終端輸入top -H後,top將以上一次系統記得的“H"狀態的相反的狀態運行。如上次top的H狀態是off,則這次運行時H狀態就變成on了,H狀態是on時,所有的單獨 的線程都會被顯示出來,但是,top是顯示一個進程的所有線程的總和。如下圖,當把"H”設爲off時,top顯示的qemu-kvm只有兩欄,把"H"設爲on時,top顯示的qemu-kvm有總共有四欄。
-i 空閒進程開關,使top不顯示任何閒置或者僵死進程。以系統記得的“i”狀態的相反狀態啓動top。當開關是off時,空閒的或僵死的任務將不被顯示。
-n 設置重複次數,如設置top -n 5則top將屏幕刷新5次後top退出。
-u 以給定的有效的UID或用戶名啓動top,如在終端中輸入top -u caochun 則只顯示用戶caochun相關的進程。
-U 和-u差不多,但是-U後可以跟真實的,有效的,保存的和文件系統的UID。
-s 以安全模式操作,使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
-S 累計時間模式切換開關,指定累計模式
在top命令的顯示窗口,我們還可以輸入以下字母,進行一些交互:
幫助文檔如下:
Help for Interactive Commands - procps version 3.2.7
Window 1:Def: Cumulative mode Off. System: Delay 4.0 secs; Secure mode Off.
Z,B Global: 'Z' change color mappings; 'B' disable/enable bold
l,t,m Toggle Summaries: 'l' load avg; 't' task/cpu stats; 'm' mem info
1,I Toggle SMP view: '1' single/separate states; 'I' Irix/Solaris mode
f,o . Fields/Columns: 'f' add or remove; 'o' change display order
F or O . Select sort field
<,> . Move sort field: '<' next col left; '>' next col right
R,H . Toggle: 'R' normal/reverse sort; 'H' show threads
c,i,S . Toggle: 'c' cmd name/line; 'i' idle tasks; 'S' cumulative time
x,y . Toggle highlights: 'x' sort field; 'y' running tasks
z,b . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
u . Show specific user only
n or # . Set maximum tasks displayed
k,r Manipulate tasks: 'k' kill; 'r' renice
d or s Set update interval
W Write configuration file
q Quit
( commands shown with '.' require a visible task display window )
Press 'h' or '?' for help with Windows,
h或者? : 顯示幫助畫面,給出一些簡短的命令總結說明。
k :終止一個進程。系統將提示用戶輸入需要終止的進程PID,以及需要發送給該進程什麼樣的信號。一般的終止進程可以使用15信號;如果不能正常結束那就使用信號9強制結束該進程。默認值是信號15。在安全模式中此命令被屏蔽。
i:忽略閒置和僵死進程。這是一個開關式命令。
q: 退出程序。
r: 重新安排一個進程的優先級別。系統提示用戶輸入需要改變的進程PID以及需要設置的進程優先級值。輸入一個正值將使優先級降低,反之則可以使該進程擁有更高的優先權。默認值是10。
S:切換到累計模式。
s : 改變兩次刷新之間的延遲時間。系統將提示用戶輸入新的時間,單位爲s。如果有小數,就換算成ms。輸入0值則系統將不斷刷新,默認值是5 s。需要注意的是如果設置太 小的時間,很可能會引起不斷刷新,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。
f或者F :從當前顯示中添加或者刪除項目。
o或者O :改變顯示項目的順序。
l: 切換顯示平均負載和啓動時間信息。即顯示隱藏第一行
m: 切換顯示內存信息。即顯示影藏內存行
t : 切換顯示進程和CPU狀態信息。即顯示影藏CPU行
c: 切換顯示命令名稱和完整命令行。 顯示完整的命令。 這個功能很有用。
M : 根據駐留內存大小進行排序。
P:根據CPU使用百分比大小進行排序。
T: 根據時間/累計時間進行排序。
W: 將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。
1: 在top基本視圖中,按鍵盤數字“1”,可監控每個邏輯CPU的狀況(只在多核CPU主機上纔有意義):
多核上:
單核上:
z/Z:和b類似,Z設置z窗口或所有窗口的顏色分佈(0-7八種顏色選擇)。
按鍵z顯示如下:
按鍵Z,顯示如下:
b:高亮顯示當前運行(Running)進程.
y:通過敲擊“y”鍵關閉或打開運行態進程的加亮效果.
x:打開/關閉排序列的加亮效果(一般配合b顯示,top默認的排序列是“%CPU”)
shift + > 或 shift + < 可以向右或左改變排序列.例如:
敲擊鍵盤“b”(打開/關閉運行態進程的加亮效果),top的視圖變化如下:
我們發現進程id爲4883的“top”進程被加亮了,top進程就是視圖第二行顯示的唯一的運行態(runing)的那個進程,可以通過敲擊“y”鍵關閉或打開運行態進程的加亮效果。
敲擊x鍵進程字段排序:(默認進入top時,各進程是按照CPU的佔用量來排序)可以看到,top默認的排序列是“%CPU”
通過”shift + >”或”shift + <”可以向右或左改變排序列
= 解除顯示指定進程的限制。當按i只顯示正在運行的進程,而不顯示出於睡眠狀態的進程時,按下=可以解除這種限制,恢復默認顯示。或在終端以top -p 運行top只顯示指定進程時,按下=可以恢復默認顯示。
A 在全屏模式和分屏顯示模式間切換
G 轉到下個窗口
***************************************************************************************************
一、Atop 是一個基於 ASCII 的全屏的性能監控工具,可用來監控進程的活動時間,高亮顯示出一些過載的進程,還包括其他的一些系統指標例如:CPU、內存、交換分區、磁盤和網絡等信息。
下載地址:atop
安裝
1 2 3 | cd atop-1.27-3 make make install |
二、htop是一個可以讓用戶與之交互的進程查看器。作爲文本模式的應用程序,主要用於控制檯或 X 終端中。當前具有按樹狀方式來查看進程,支持顏色主題,可以定製等特性。
Ubuntu下最強大的進程監視器htop使用
[日期:2013-05-28] | 來源:Linux社區 作者:LinuxIDC.com | [字體:大 中 小] |
1、top是Linux下常用的監控程序,htop相當於其加強版,顏色顯示不同參數,且支持鼠標操作。
以前一直是在使用top查看系統的情況,現在發現了一個top的升級程序-htop。吸引我的除了功能上的增強外,就是它支持了鼠標的操作。top和htop主要區別:
In 'htop' you can scroll the list vertically and horizontally to see all processes and complete command lines.
In 'top' you are subject to a delay for each unassigned key you press (especially annoying when multi-key escape sequences are triggered by accident).
'htop' starts faster ('top' seems to collect data for a while before displaying anything).
In 'htop' you don't need to type the process number to kill a process, in 'top' you do.
In 'htop' you don't need to type the process number or the priority value to renice a process, in 'top' you do.
'htop' supports mouse operation, 'top' doesn't
'top' is older, hence, more used and tested.
2.Ubuntu下軟件安裝htop
3.htop軟件使用(主菜單)
F1 幫助信息 (支持鼠標哦)
記住常用的幾個快捷鍵就行 什麼t s P M H K等等
F2 一些設置 (這個比較簡單)
F3 是可以搜索 F4是過濾出哪個進程 F5 就是上面的快捷鍵t F6是選擇進程排序的依據(默認是CPU使用率)
F7 F8可以直接修改選中進程的優先級
F9 可以直接kill掉進程
PS 一個 :選中進程 按快捷鍵s 可以strace 進程 前提是安裝了strace。
總結一句話 這個軟件很簡單 大家玩了就知道 決定比top好用
代替系統自帶的top
編輯/root/.bashrc文件:
添加如下代碼
if [ -f /usr/local/bin/htop ]; then
alias top=’/usr/local/bin/htop’
fi
安裝
1 2 3 | ./configure make make intall |
三、Iftop 主要用來顯示本機網絡流量情況及各相互通信的流量集合,如單獨同那臺機器間的流量大小,非常適合於代理服務器和iptables服務器使用
下載地址:iftop
安裝
1 2 3 | ./configure make make install |
四、Iotop 是一個用來監視磁盤 I/O 使用狀況的 top 類工具。如下圖所示,Iotop 具有與 top 相似的 UI,其中包括 PID、用戶、I/O、進程等相關信息
Iotop 使用 Python 語言編寫而成,要求 Python 2.5(及以上版本)和 Linux kernel 2.6.20(及以上版本)。
Iotop 提供有源代碼及 RPM 包,可從其官方主頁下載。
下載地址:Iotop
1、查看內核版本1
uname -r
2、重新編譯內核
01
02
03
04
05
06
07
08
09
10
11
12
wget http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.32/linux-2.6.32.58.tar.bz2
tar jxf linux-2.6.32.58.tar.bz2 -C /usr/src
cd /usr/src/linux-2.6.32.58
make mrproper
make menuconfig
#這一步中把General setup —— Enable extended accounting over taskstats (EXPERIMENTAL) —— Enable per-task storage I/O accounting這個選項選上。
make
make modules_install
make install
3、安裝Python
1
2
3
4
5
6
wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2
tar jxf Python-2.7.2.tar.bz2 -C /usr/src
cd /usr/src/Python-2.7.2
./configure
make
make install
安裝後的默認路徑是:/usr/local/bin/python2.7
建立軟連接,使系統默認的python指向python2.7
正常情況下即使python2.7安裝成功後,系統默認指向的python仍然是2.4.3版本,考慮到yum是基於python2.4.3才能正常工作,不敢輕易卸載。如何實現將系統默認的python指向到2.7版本呢?
1
2
3
4
mv /usr/bin/python /usr/bin/python2.4
ln -s /usr/local/bin/python2.7 /usr/bin/python
#檢驗python指向是否成功
python -V
解決系統python軟鏈接指向python2.7版本後,yum不能正常工作方法:
#vi /usr/bin/yum
將文本編輯顯示的#/usr/bin/python修改爲#/usr/bin/python2.4,保存修改即可
4、安裝iotop
1
2
3
4
wget http://guichaz.free.fr/iotop/files/iotop-0.4.4.tar.gz
tar zxf iotop-0.4.4.tar.gz
python setup.py build
python setup.py install
iotop 就可以看到效果了
如果出現
1
2
3
4
5
[root@slavedb1 iotop-0.3.1]# iotop
Traceback (most recent call last):
File “/usr/local/bin/iotop”, line 4, in
import pkg_resources
ImportError: No module named pkg_resources
還需要裝setuptools 這個包
1
2
3
4
wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c9.tar.gz#md5=3864c01d9c719c8924c455714492295e
cd setuptools-0.6c9
python setup.py build
python setup.py install