『學了就忘』Linux系統管理 — 83、Linux中進程的查看(top命令)


1、top命令介紹

top命令是用來動態顯示系統中進程的命令。

[root@localhost ~]# top [選項]

選項:
  -d秒數:指定top命令每隔幾秒更新。默認是3秒。
  -b:使用批處理模式輸出。一般和"-n"選項合用,用於把top命令重定向到文件中。
  -n次數:指定top命令執行的次數。一般和“-b”選項合用。
  -p:指定PID。只查看某個PID的進程。
  -s:使top在安全模式運行,避免在交互模式中出現錯誤。
  -u用戶名:只監聽某個用戶的進程。

演示:

image

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 stSteal 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進程為例:

image

按兩次回車嗎,xinetd進程被kill掉了,等待3秒刷新。

image

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


免責聲明!

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



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