top命令和ps命令的基本作用是相同的,顯示系統當前的進程和其它狀況;但是top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態。如果在前臺執行該命令,它將獨佔前臺,直到用戶終止該程序爲止。
比較準確的說,top命令提供了實時的對系統處理器的狀態監視。它將顯示系統中CPU最“敏感”的任務列表。該命令可以按CPU使用、內存使用、執行時間對任務進行排序;而且該命令的很多特性都可以通過交互式命令或者在個人定製文件中進行設定。在後面的介紹中將把命令參數和交互命令分開講述。
top命令語法:
top [-] [d delay] [q] [c] [s] [S] [i]
d 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。
q 該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶權限,那麼top將以儘可能高的優先級運行。
S 指定累計模式。
s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
i 使top不顯示任何閒置或者僵死進程。
c 顯示整個命令行而不只是顯示命令名。(進程的command列顯示進程的對應命令行或命令名)
top命令結果詳解:
上圖爲top命令顯示的結果,默認值是每5秒更新一次。先對顯示的各項目意義做詳細介紹:
1) 基本信息與系統負載
18:42:37 up 8 days, 9:04, 1 user, load average: 0.76, 0.85, 0.79
uptime 該項顯示的是系統時間、已經運行的時間、系統啓動時間和三個平均負載值(最近1秒,5秒,15秒的負載值)。
2) 系統進程信息
Tasks: 165 total, 1 running, 164 sleeping, 0 stopped, 0 zombie
processes 自最近一次刷新以來的運行進程總數。這些進程被分爲正在運行的,休眠的,停止運行的和殭屍的,數字表示的是相應類型的數目。
3) CPU狀態信息
Cpu(s): 13.3%us, 0.8%sy, 0.0%ni, 85.5%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
CPU states 顯示用戶模式、系統模式、優先級進程(只有優先級爲負的列入考慮)和閒置等各種情況所佔用CPU時間的百分比。優先級進程所消耗的時間也被列入到用戶和系統的時間中,所以總的百分比將大於100%。
各部分所表達的意思如下所示:
us -- User CPU time
The time the CPU has spent running users' processes that are not niced.
sy -- System CPU time
The time the CPU has spent running the kernel and its processes.
ni -- Nice CPU time
The time the CPU has spent running users' proccess that have been niced.
wa -- iowait
Amount of time the CPU has been waiting for I/O to complete.
hi -- Hardware IRQ
The amount of time the CPU has been servicing hardware interrupts.
si -- Software Interrupts
The amount of time the CPU has been servicing software interrupts.
st -- Steal Time
The amount of CPU 'stolen' from this virtual machine by the hypervisor for other tasks (such as running another virtual machine).
4) 內存使用信息
Mem: 3991724k total, 3388492k used, 603232k free, 212624k buffers
Mem 內存使用情況統計,其中包括總的內存、已用內存、空閒內存,內存緩存的情況。
5) 交換空間信息
Swap: 7815580k total, 12144k used, 7803436k free, 2569748k cached
Swap 交換空間統計,其中包括總的交換空間、已用交換空間、可用交換空間和已交換內容的信息。
5) 進程詳細信息
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
29060 root 20 0 2082m 395m 50m S 1 10.1 10:37.74 jsvc
3785 root 20 0 125m 9704 1668 S 0 0.2 1:11.00 Xorg
15527 postgres 20 0 103m 8984 5980 S 0 0.2 0:00.10 postgres
15529 postgres 20 0 103m 8756 5752 S 0 0.2 0:00.09 postgres
15630 postgres 20 0 103m 8316 5316 S 0 0.2 0:00.04 postgres
15640 postgres 20 0 103m 8176 5172 S 0 0.2 0:00.03 postgres
15655 postgres 20 0 103m 8028 5024 S 0 0.2 0:00.02 postgres
1 root 20 0 4104 448 368 S 0 0.0 0:01.17 init
2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0 0.0 0:00.01 migration/0
PID 每個進程的ID。PPID 每個進程的父進程ID。UID 每個進程所有者的UID
USER 每個進程所有者的用戶名
PR 每個進程的優先級別
NI 該進程的優先級值
VIRT 進程“需要的”虛擬內存大小,包括進程使用的庫、代碼和數據等
RES 該進程佔用的物理內存的總數量,單位是KB
SHE 該進程使用共享內存的數量
S 該進程的狀態。其中S代表休眠狀態;D代表不可中斷的休眠狀態;R代表運行狀態;Z代表僵死狀態;T代表停止或跟蹤狀態
%CPU 該進程自最近一次刷新以來所佔用的CPU時間和總時間的百分比
%MEM 該進程佔用的物理內存佔總內存的百分比
TIME+ 該進程自啓動以來所佔用的總CPU時間。如果進入的是累計模式,那麼該時間還包括這個進程子進程所佔用的時間。且標題會變成CTIME
COMMAND 該進程的命令名稱,如果一行顯示不下,則會進行截取。內存中的進程會有一個完整的命令行
top交互命令選項
Ctrl+L 擦除並且重寫屏幕。
h或者? 顯示幫助畫面,給出一些簡短的命令總結說明。
k 終止一個進程。系統將提示用戶輸入需要終止的進程PID,以及需要發送給該進程什麼樣的信號。一般的終止進程可以使用15信號;如果不能正常結束那就使用信號9強制結束該進程。默認值是信號15。在安全模式中此命令被屏蔽.
i 忽略閒置和僵死進程。這是一個開關式命令。
q 退出程序。
r 重新安排一個進程的優先級別。
S 切換到累計模式。
s 改變兩次刷新之間的延遲時間。系統將提示用戶輸入新的時間,單位爲s。如果有小數,就換算成m s。輸入0值則系統將不斷刷新,默認值是5 s。需要注意的是如果設置太小的時間,很可能會引起不斷刷新,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。
f或者F 從當前顯示中添加或者刪除項目。
o或者O 改變顯示項目的順序。
l 切換顯示平均負載和啓動時間信息。
m 切換顯示內存信息。
t 切換顯示進程和CPU狀態信息。
c 切換顯示命令名稱和完整命令行。
M 根據駐留內存大小進行排序。
P 根據CPU使用百分比大小進行排序。
T 根據時間/累計時間進行排序。
W 將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。
==============================================
參考:http://blog.csdn.net/sanshiqiduer/article/details/1933625