1、top命令介紹
top
命令是用來動態顯示系統中程式的命令。
[root@localhost ~]# top [選項]
選項:
-d秒數:指定top命令每隔幾秒更新。預設是3秒。
-b:使用批處理模式輸出。一般和"-n"選項合用,用於把top命令重定向到檔案中。
-n次數:指定top命令執行的次數。一般和“-b”選項合用。
-p:指定PID。只檢視某個PID的程式。
-s:使top在安全模式執行,避免在互動模式中出現錯誤。
-u使用者名稱:只監聽某個使用者的程式。
演示:
在top
命令的互動模式當中可以執行的命令:
?或h
:顯示互動模式的幫助。P
:以CPU使用率排序,預設就是此項。M
:以記憶體的使用率排序。N
:以PID排序。T
:按照CPU的累積運算時間排序,也就是用TIME+項排序k
:按照PID號,給予某個程式一個訊號。一般用於終止某個程式,訊號9是強制終止的訊號。r
:按照PID號,給某個程式重設優先順序(Nice)值。q
:退出top
命令。
提示:按任意鍵就可以返回到
top
命令的初始互動介面。
2、top命令示例
執行top
命令檢視結果:
[root@localhost ~]# top
# 顯示結果如下
top - 19:16:08 up 2 day, 10:34, 2 users, load average: 0.12, 0.06, 0.06
Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1906280k total, 467692k used, 1438588k free, 59528k buffers
Swap: 511996k total, 0k used, 511996k free, 232692k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5113 root 20 0 15032 1228 936 R 0.7 0.1 0:00.34 top
1 root 20 0 19344 1548 1232 S 0.0 0.1 0:02.63 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.38 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.14 ksoftirqd/0
top
命令的輸出內容是動態的,預設每3秒重新整理一次。
命令的輸出主要分為兩大部分:
- 第一部分是前五行,顯示的是整個系統的資源使用狀況,我們就是通過這些輸出判斷伺服器的健康狀態。
- 第二部分從第六行開始,顯示的是系統中程式的資訊。
3、top命令輸出項解釋
(1)第一部分的說明
- 第一行資訊為任務佇列資訊。
內容 說明 19:16:08
系統當前時間。 up 2 day, 10:34
系統的執行時間,本機已經執行2天10小時34分鐘。 2 users
當前登入了兩個使用者。 load average: 0.12, 0.06, 0.06
系統在之前1分鐘,5分鐘,15分鐘的平均負載。
如果CPU是單核,則這個數超過1,就是高負載。
如果CPU是四核,則這個數超過4,就是高負載。
(這個平均負載完全是個人經驗來進行判斷的,
一般認為不應該超過伺服器CPU的核數。) - 第二行為程式資訊。
內容 說明 Tasks: 112 total
系統中的程式總數。 1 running
正在執行的程式數。 111 sleeping
睡眠的程式。 0 stopped
正在停止的程式。 0 zombie
殭屍程式。如果不是0,需要手工檢查殭屍程式。 - 第三行為CPU資訊。
內容 說明 Cpu(s): 0.2%us
使用者模式佔用的CPU百分比。 0.2%sy
系統模式佔用的CPU百分比。 0.0%ni
改變過優先順序的使用者程式佔用的CPU百分比。 99.7%id
空閒CPU的CPU百分比。 0.0%wa
等待輸入/輸出的程式的佔用CPU百分比。 0.0%hi
硬中斷請求服務佔用的CPU百分比。 0.0%si
軟中斷請求服務佔用的CPU百分比。 0.0%st
st
(Steal time
)虛擬時間百分比。就是當有虛擬機器時,虛擬CPU等待實際CPU的時間百分比。 - 第四行為實體記憶體資訊。
內容 說明 Mem: 1906280k total
實體記憶體的總量,單位KB。 467692k used
已經使用的實體記憶體數量。 1438588k free
空閒的實體記憶體數量,我們使用的是虛擬機器,總共只分配了2GB記憶體,所以只有1438MB左右的空閒記憶體了。 59528k buffers
作為緩衝的記憶體數量。 - 第五行為交換分割槽(
swap
)資訊。內容 說明 Swap: 511996k total
交換分割槽(虛擬記憶體)的總大小。 0k used
已經使用的互動分割槽的大小。 511996k free
空閒交換分割槽的大小。 232692k cached
作為快取的互動分割槽的大小。
說明:
重點觀察的輸出項
load average
:cpu之前的負載壓力。99.7%id
:cpu空閒。Mem:free
:記憶體空間的空閒。Swap:free
:Swap空間的空閒。以上選項就能大概判斷伺服器的壓力大概的情況。
(2)第二部分的說明
第二部分輸出的內容,主要是系統程式資訊。
這部分和ps
命令的輸出比較類似,只是如果在終端中執行top
命令,不能看到所有的程式,預設是按cpu
的佔用率排序的,所以預設只能看到cpu
佔比靠前的程式。
例如:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5113 root 20 0 15032 1228 936 R 0.7 0.1 0:00.34 top
PID
:程式ID。USER
:該程式所屬的使用者。PR
:優先順序,數值越小優先順序越高。NI
:優先順序,數值越小優先順序越高。VIRT
:該程式使用的虛擬記憶體的大小,單位KB。RES
:該程式使用的實體記憶體的大小,單位KB。SHR
:共享記憶體大小,單位KB。S
:程式狀態。%CPU
:該程式佔用CPU的百分比。%MEM
:該程式佔用記憶體的百分比。TIME+
:該程式總共佔的CPU時間。COMMAND
:程式命令名。
4、top命令常用的例項
(1)只檢視PID為5470的sshd的程式
[root@localhost ~]# top -p 5470
top - 20:48:41 up 12:07, 3 users, load average: 0.00, 0.02, 0.08
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 1906280k total, 470252k used, 1436028k free, 59528k buffers
Swap: 511996k total, 0k used, 511996k free, 232744k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5470 root 20 0 99.7m 4148 3156 S 0.0 0.2 0:00.40 sshd
(2)按"k"鍵終止某個程式
進入到top
命令的互動介面,按k
鍵,會提示輸入要殺死程式的PID。
按兩次回車就可以殺死程式指定程式。(這種殺掉程式的方式不常用)
下面我們以xinetd
程式為例:
按兩次回車嗎,xinetd
程式被kill
掉了,等待3秒重新整理。
(3)如何用top命令檢視Linux中所有程式
如果在操作終端執行top
命令,並不能看到系統中所有的程式,預設看到的只是CPU佔比靠前的程式。如果我們想要看到所有的程式,可以把top
命令的結果重定向到檔案當中即可。
不過top
命令是持續執行的,這時就需要-b
和-n
選項了,具體命令如下:
# 讓top命令只執行一次,讓後把結果儲存到top.log檔案中。這樣就能看到所有的程式了
[root@localhost ~]# top -b -n 1 > /root/top.log
說明:
-b : 可以使top命令內容輸出。
-n : 指定top命令執行的次數(重新整理一回算一次)。