使用top查看進程和系統負載信息


引言                                 

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

 

默認輸出

top命令的默認輸出如下:

top - 08:27:48 up 21:43,  2 users,  load average: 1.48, 1.47, 1.39
Tasks: 228 total,   2 running, 226 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  2.5%sy,  0.0%ni, 97.2%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:     15945M total,     1726M used,    14219M free,       48M buffers
Swap:     8197M total,        0M used,     8197M free,     1196M cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
   22 root      20   0     0    0    0 R  1.9  0.0  60:23.34 ksoftirqd/9
 8689 root      20   0  273m  67m  11m S  0.0  0.4   2:04.01 java
11058 root 39 19 0 0 0 S 0.0 0.0 1:45.68 kipmi0 11771 root -98 0 20388 19m 7256 S 0.0 0.1 0:16.06 had 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0

 

以上輸出上下分成兩部分,上半部分顯示了整體系統負載情況,各行含義如下:

  • 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命令默認輸出提供了很多信息,為獲取我們關注的信息,可以使用top命令選項,也可以在top運行中使用快捷鍵過濾輸出信息、根據cpu使用率等值對進程進行排序,下面給出具體使用例子。

 

對輸出結果進行排序

top輸出的下半部分有很多進程信息列,我們可以根據這些列對進程輸出進行排序,默認情況下根據cpu使用率對進程排序。在top命令執行時,按”O”,可以看到排序項以及相應的按鍵:

Current Sort Field:  K  for window 1:Def
Select sort field via field letter, type any other key to return

  a: PID        = Process Id
  b: PPID       = Parent Process Pid
  c: RUSER      = Real user name
  d: UID        = User Id
  ……

各項默認以從大到小排序,top運行中,按”R”可反向顯示輸出結果。

 

顯示特定用戶相關進程

在top運行時,按”u”快捷鍵,可以過濾出特定用戶拉起的進程:

Which user (blank for all): sshusr
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
15561 sshusr    20   0  3700  356  276 R  8.3  0.0   5:26.05 a.out
15492 sshusr    20   0 81932 1868 1088 S  0.0  0.0   0:00.00 sash
15493 sshusr    20   0 13840 2872 1580 S  0.0  0.0   0:00.04 bash

執行top命令時,使用”top -u sshusr”可以起到相同效果。

 

顯示特定進程

執行top時,使用”-p”選項可以指定要顯示的進程:

# top -p 15561,15492
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
15561 sshusr    20   0  3700  356  276 R  8.3  0.0  49:03.57 a.out
15492 sshusr    20   0 81932 1868 1088 S  0.0  0.0   0:00.00 sshd

 

顯示所有cpu核使用情況

默認情況下,top上半部分資源負載信息中,顯示的是cpu整體的使用情況:

top - 10:33:33 up 23:49,  7 users,  load average: 2.02, 2.12, 2.17
Tasks: 259 total,   3 running, 256 sleeping,   0 stopped,   0 zombie
Cpu(s): 8.5%us,  2.4%sy,  0.0%ni, 88.9%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st

按數字”1”快捷鍵,可以開啟/關閉顯示各個cpu核的信息:

Cpu0  :  0.0%us,  0.3%sy,  0.0%ni, 99.7%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
Cpu2  :  0.3%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

 

更改top命令顯示頻率

默認情況下,top命令以3秒的頻率更新輸出結果,top命令執行時,按”d”可以更新top更新頻率:

Change delay from 3.0 to: 1
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
15561 sshusr    20   0  3700  356  276 R  8.2  0.0  65:53.58 a.out
   26 root      20   0     0    0    0 R  2.8  0.0 106:13.28 ksoftirqd/11

執行top命令時,使用”-d”選項也可以指定top輸出跟新頻率。另外,按空格鍵,可以手動更新輸出。

 

顯示命令的全路徑和參數

top運行時,按”c”快捷鍵,將顯示命令的全路徑以及命令參數:

15561 sshusr    20   0  3700  356  276 R  8.3  0.0  73:40.02 ./a.out
11088 root      20   0  220m 7196 3000 S  0.5  0.0  78:48.42 /opt/HPI/HPI_ALARM/runHpiAlarm
11974 root      20   0  9252 3244 1844 S  0.0  0.0   0:51.01 /opt/VRTSvcs/bin/HostMonitor -type HostMonitor -agdir /

 

指定顯示的進程數目

top默認依據窗口大小顯示進程數,有時我們對進程排序后,只想關注排在前面的幾個進程,使用”-n”快捷鍵可以達到目的:

Maximum tasks = 0, change to (0 is unlimited): 2
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    4 root      20   0     0    0    0 R  2.1  0.0  25:27.25 ksoftirqd/0
11088 root      20   0  220m 7196 3000 S  0.7  0.0  80:17.93 runHpiAlarm

 

在top中向進程發送信號

top運行時,按”k”快捷鍵,可向指定進程發送信號,默認信號為SIGTERM,該信號可中止進程:

PID to kill: 15561
Kill PID 15561 with signal [15]:
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
15561 sshusr    30  10  3700  356  276 R  8.2  0.0  95:33.45 a.out
   18 root      20   0     0    0    0 R  2.8  0.0  41:48.24 ksoftirqd/7

 

更改進程的nice優先級值

top運行時,按”r”快捷鍵,可以修改指定進程的nice優先級:

PID to renice: 17898
Renice PID 17898 to value: 10
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
17898 sshusr    20   0  3700  356  276 R  8.3  0.0   0:03.96 a.out
    4 root      20   0     0    0    0 R  2.0  0.0  25:51.30 ksoftirqd/0

 

保存top配置

為看到我們關注的進程、信息,用了很多快捷鍵,若下次運行top時,想要看到之前關心的內容,又要敲一遍快捷鍵,這相當不方便。使用”W”快捷鍵,可以把當前顯示配置保存到~/.toprc文件中。 

例如以1秒的頻率查看前10個占用內存最多的進程,我們需要敲下列快捷鍵:

d: Change delay from 3.0 to: 1 n: Maximum tasks = 0, change to (0 is unlimited): 10 M: 快捷鍵”M”指示進程根據內存使用率從大到小排序 

之后按下”W”可以對配置進行保存:

W: Wrote configuration to '/root/.toprc'

退出再執行top命令,可以看到top以1秒的頻率查看前10個占用內存最多的進程,與我們之前保存的配置相符。

 

 

Reference: Can You Top This? 15 Practical Linux Top Command Examples

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM