linux下top命令詳細介紹
top 命令是 Linux 下常用的系統資源占用查看及性能分析工具,能夠實時顯示系統中各個進程的資源(比如cpu、內存的使用)占用狀況,top命令的執行結果是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前台執行該命令,它將獨占前台,直到用戶終止該程序為止.top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU使用.內存使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過交互式命令或者在個人定制文件中進行設定。top命令基本上是各個版本的linux的自帶命令,例如:CentOS,redhat,ubuntu等。
top命令的格式及參數如下
1)命令及參數基本用法:
top
-hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
2)常用參數說明
d 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。 p 通過指定監控進程ID來僅僅監控某個進程的狀態。 q 該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶權限,那么top將以盡可能高的優先級運行。 S 指定累計模式。 s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。 i 使top不顯示任何閑置或者僵死進程。 c 顯示整個命令行而不只是顯示命令名。 -n :與 -b 搭配,意義是,需要進行幾次 top 的輸出結果。 -p :指定某些個 PID 來進行觀察監測而已。 在 top 執行過程當中可以使用的按鍵指令: ? :顯示在 top 當中可以輸入的按鍵指令; P :以 CPU 的使用資源排序顯示; M :以 Memory 的使用資源排序顯示; N :以 PID 來排序喔! T :由該 Process 使用的 CPU 時間累積 (TIME+) 排序。 k :給予某個 PID 一個訊號 (signal) r :給予某個 PID 重新制訂一個 nice 值。
linux下top命令執行結果
1)top命令執行結果如圖所示
2)top命令執行結果重要列的含義詳解
默認顯示的列包括 PID,USERPR,NI,VIRT,RES,SHR,S,%CPU,%MEM,TIME+,COMMAND.
top命令結果各列的含義如下:
列名 含義 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 若該進程在睡眠,則顯示睡眠中的系統函數名
3)top命令執行結果按照某一列排序
在命令行提示符執行top命令,輸入大寫P,則結果按CPU占用降序排序。輸入大寫M,結果按內存占用降序排序。(注:大寫P可以在capslock狀態輸入p,或者按Shift+p)。
默認情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。
更改顯示內容
通過 f 鍵可以選擇顯示的內容。按 f 鍵之后會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最后按回車鍵確定。
按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最后按回車鍵確定。
按大寫的 F 或 O 鍵,然后按 a-z 可以將進程按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。
linux下top命令使用舉例
實例1:每兩秒鍾更新一次 top ,觀察整體信息,-d參數舉例
[root@linux ~]# top -d 2 top - 18:30:36 up 30 days, 7 min, 1 user, load average: 0.42, 0.48, 0.45 Tasks: 163 total, 1 running, 161 sleeping, 1 stopped, 0 zombie Cpu(s): 4.7% us, 4.0% sy, 6.3% ni, 82.5% id, 0.4% wa, 0.1% hi, 2.0% si Mem: 1033592k total, 955252k used, 78340k free, 208648k buffers Swap: 1052216k total, 728k used, 1051488k free, 360248k cached <==如果加入 k 或 r 時,就會有相關的字樣出現在這里 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3981 apache 34 19 84012 11m 7352 S 17.3 1.2 0:00.09 httpd 1454 mysql 16 0 289m 40m 2228 S 3.8 4.0 115:01.32 mysqld 3985 dmtsai 15 0 2148 904 668 R 3.8 0.1 0:00.03 top 1 root 16 0 3552 552 472 S 0.0 0.1 0:08.90 init 2 root RT 0 0 0 0 S 0.0 0.0 0:52.76 migration/0 3 root 34 19 0 0 0 S 0.0 0.0 0:03.01 ksoftirqd/0
實例2:將 top 的信息進行 2 次,然后將結果輸出到 /tmp/top.txt,-B -N參數
[root@linux ~]# top -b -n 2 > /tmp/top.txt
實例3:假設 9999 是一個已經存在的 PID ,用top命令僅觀察指定pid的程序的-p參數用法
[root@linux ~]# top -d 2 -p 9999 top - 13:53:00 up 51 days, 2:27, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 385676k total, 371760k used, 13916k free, 131164k buffers Swap: 1020116k total, 880k used, 1019236k free, 95772k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9999 root 16 0 5396 1544 1244 S 0.0 0.4 0:00.07 bash
示例4:在linux中查看指定進程的線程數的-H參數用法
top
-H
加上這個選項啟動top,top一行顯示一個線程。否則,它一行顯示一個進程。
在linux中查看mysql線程的top命令,mysql的pid為2308
top
-H -p 2308
示例5: top命令執行結果之后按數字鍵1顯示各個CPU的核心命令
linux下top命令補充說明(常見問題解答)
top命令是Linux上進行系統監控的首選命令,當不能滿足用戶需求時,通常可用ps和netstate兩個命令來補充top的不足。
Linux下top命令中%CPU結果為什么比%us的結果高?
us是user,sy是system,注意看%wa,waiting,這個是等IO的時間,一般來說是在等磁盤操作。
100%-%id(idle)就是總共實際使用的CPU時間了。
在Linux下怎樣讓top命令啟動之后就按內存使用排序?
在鍵盤上輸入大寫字母M 以達到以內存占用率大小順序排列。另外輸入大寫字母P可以按CPU使用率排序