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命令執行的次數(刷新一回算一次)。