Linux下top命令詳解

引言

       使用top命令,可以查看正在運行的進程和系統負載信息,包括cpu負載、內存使用、各個進程所佔系統資源等,top可以以一定頻率更新這些統計信息。下面我們來學習top命令的具體使用方法。

top命令行參數

-b                批處理模式(batch mode),可輸出到管道、文件。默認情況下-b會一直輸出,可以用-nN指定輸出次數。
-n N             限制輸出次數。
-d N            刷新時間間隔。
-p PID        監控指定進程。-H -p PID   監控指定進程和進行內線程信息。

進入top界面的各項含義

各行含義如下:
  • top一行:從左到右依次爲當前系統時間,系統運行的時間,系統在之前1min、5min和15min內cpu的平均負載值
  • Tasks一行:該行給出進程整體的統計信息,包括統計週期內進程總數、運行狀態進程數、休眠狀態進程數、停止狀態進程數和僵死狀態進程數
  • Cpu(s)一行:cpu整體統計信息,包括用戶態下進程、系統態下進程佔用cpu時間比,nice值大於0的進程在用戶態下佔用cpu時間比,cpu處於idle狀態、wait狀態的時間比,以及處理硬中斷、軟中斷的時間比
  • Mem一行:該行提供了內存統計信息,包括物理內存總量、已用內存、空閒內存以及用作緩衝區的內存量
  • Swap一行:虛存統計信息,包括交換空間總量、已用交換區大小、空閒交換區大小以及用作緩存的交換空間大小

 

下半部分顯示了各個進程的運行情況,各列含義如下:

  • PID: 進程pid
  • USER: 拉起進程的用戶
  • PR: 該列值加100爲進程優先級,若優先級小於100,則該進程爲實時(real-time)進程,否則爲普通(normal)進程,實時進程的優先級更高,更容易獲得cpu調度,以上輸出結果中,java進程優先級爲120,是普通進程,had進程優先級爲2,爲實時進程,migration 進程的優先級RT對應於0,爲最高優先級
  • NI: 進程的nice優先級值,該列中,實時進程的nice值爲0,普通進程的nice值範圍爲-20~19
  • VIRT: 進程所佔虛擬內存大小(默認單位kB)
  • RES: 進程所佔物理內存大小(默認單位kB)
  • SHR: 進程所佔共享內存大小(默認單位kB)
  • S: 進程的運行狀態
  • %CPU: 採樣週期內進程所佔cpu百分比
  • %MEM: 採樣週期內進程所佔內存百分比
  • TIME+: 進程使用的cpu時間總計
  • COMMAND: 拉起進程的命令

進入top界面後的操作

按鍵 說明
c                                      顯示完整的命令名。c爲Command之意。
d                                      修改刷新時間。d爲Display之意。
u                                      顯示指定用戶相關進程。u爲User之意。
P                                      按CPU使用排序。P爲Processor(處理器)之意。
M                                      按內存使用排序。M爲Momery之意。
F                                      排序(進入新的界面,並選擇排序的目標字段)。
R                                      順序或逆序。
H                                      顯示線程
Z                                      以多色彩顯示top。
l/t/m                                      toggle,load/cpu/內存信息
1                                      顯示多CPU的信息(多核機器上查看每個CPU的使用率)。
W                                      保存當前top的配置

參考:http://www.berlinix.com/linux/top.php


1、輸入1可以看到CPU各個核的CPU負載

Cpu0 : 1.0%us, 3.0%sy, 0.0%ni, 96.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

這裏對us,sy,ni,id,wa,hi,si,st進行分別說明:

us  列顯示了用戶模式下所花費 CPU 時間的百分比。

      us的值比較高時,說明用戶進程消耗的cpu時間多,但是如果長期大於50%,需要考慮優化用戶的程序

sy   列顯示了內核進程所花費的cpu時間的百分比。

      這裏us + sy的參考值爲80%,如果us+sy 大於 80%說明可能存在CPU不足
ni   列顯示了用戶進程空間內改變過優先級的進程佔用CPU百分比。

id   列顯示了cpu處在空閒狀態的時間百分比

wa 列顯示了IO等待所佔用的CPU時間的百分比

     這裏wa的參考值爲30%,如果wa超過30%,說明IO等待嚴重,這可能是磁盤大量隨機訪問造成的,也可能磁盤或者磁盤訪問控制器的帶寬瓶頸造成的(主要是塊操作)。   //這個wa和vmstat中的wa是相同含義

hi   硬件中斷佔用CPU

si   軟件中斷佔用CPU

st  丟失時間佔用CPU

在後臺服務器開發中需要關注us,sy,id,wa等常用指標。


2、top輸入u,輸入用戶名,查看指定用戶的進程信息

u             輸入用戶名           查看指定用戶的進程信息(多個用戶使用同一臺機器開發時,非常有用)


3、按CPU佔用率排序

Shift+p     按CPU排序


4、按內存佔用率排序

Shift+m    按內存使用排序


5、按CPU佔用時間排序

Shift+t      按CPU用時排序


其它:

Shift+n     按PID排序

注意:

       如果在命令行選項中使用了s選項,則可能其中一些命令會被屏蔽掉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章