linux 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個佔用內存最多的進程,與我們之前保存的配置相符。
發佈了61 篇原創文章 · 獲贊 0 · 訪問量 2701
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章