鍍金池/ 教程/ Linux/ shell 學習五十一天----top 命令查看進程列表
shell 學習四十一天----列出文件 ls 和 od 命令
shell 學習小結
shell 學習第二十八天----case 語句
shell 學習四十四天----尋找文件
shell 學習三十五天----波浪號展開與通配符
shell 學習三十八天----執(zhí)行順序和 eval
shell 學習四十八天----文件校驗和匹配
shell 學習四十天----awk 的驚人表現(xiàn)
shell 學習第十一天----sed 正則的精確控制
shell 學習第十七天----awk 命令
shell 學習三十九天----內建命令
shell 學習四十五天----xargs
shell 學習三十七天----引用
shell 學習第十六天----join 練習
shell 學習第二十四天----提取開頭或結尾數(shù)行
shell 學習第九天----分組
shell 學習第五天----基本的 I/O 重定向
shell 學習第十五天----使用 cut 選定字段
shell 學習四十六天----文件系統(tǒng)的空間信息 df 和 du 命令
shell 學習第八天----擴展正則表達式 (ERE)
shell 學習第十九天----文本塊排序
shell 學習第二十一天----重新格式化段落
shell 學習三十六天----命令替換
shell 學習第二十天----sort 的其他內容以及 uniq 命令
shell 學習四十二天----使用 touch 更新文件時間
shell 學習五十一天----top 命令查看進程列表
shell 學習第一天
shell 學習五十四天----進程系統(tǒng)調用的追蹤 strace
shell 學習五十天----查看進程 ps 命令
shell 學習第二十七天----退出狀態(tài)和 if 語句
shell 學習第二十三天----打印
shell 學習三十三天----關于重定向
shell 學習四十九天----進程建立
shell 學習第三十天----break,continue,shift,getopts
shell 學習五十五天----進程記賬
shell 學習總結一
shell 學習第二十六天----變量與算數(shù)
shell 學習第二十二天----計算行數(shù), 字數(shù)以及字符數(shù)
shell 學習五十八天----/proc 文件系統(tǒng)
shell 學習第二十五天----神器的管道符
shell 學習第三十二天----read 讀取一行
sheel 學習第三天
shell 學習----小結
shell 學習第十八天----文本排序
shell 學習第三十一天----函數(shù)問題
shell 學習第十天----sed 查找與替換
shell 學習四十三天----臨時性文件的建立與使用
shell 學習四十七天----文件比較 cmp,diff,patch
shell 學習三十四天----printf 詳解
shell 學習五十七天 ----linux 任務管理,針對上一講的總結和擴展
shell 學習第六天----小結
shell 學習第十三天----sed 案例分析
shell 學習第七天----基礎正則表達式 (BRE)
shell 學習第十二天----行與字符串
shell 學習小結四
shell 學習第二十九天----循環(huán)
shell 學習五十二天----刪除進程 kill 命令
shell 學習五十六天----延遲進程調度
shell 學習第四天----華麗的 printf 輸出
shell 學習第十五天----join 連接字段
shell 學習完結篇----希望你能看到
shell 學習第二天
shell 學習五十三天----捕獲信號 trap

shell 學習五十一天----top 命令查看進程列表

top 命令查看進程列表

top 命令是 linux 下常用的性能分析工具,能實時顯示系統(tǒng)中各個進程的資源占用狀況。和 win 的資源管理器類似。top 是一個動態(tài)顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態(tài),如果在前臺執(zhí)行該命令,它將獨占前臺,知道用戶終止該程序為止。比較準確的說,top 命令提供了實時的對系統(tǒng)處理器的狀態(tài)監(jiān)視。它將顯示系統(tǒng)中 CPU 最” 敏感” 的任務列表。該命令可以按 CPU 使用,內存使用和執(zhí)行時間對任務進行排序;而且該命令的很多特性都可以通過交互命令或者在個人定制文件中進行設定。

top 命令詳解

  1. 命令格式: top [參數(shù)]

  2. 功能: 顯示當前系統(tǒng)正在執(zhí)行的進程的相關信息,包括進程的相關信息,包括進程 ID,內存占用率,CPU 占用率等等

  3. 主要參數(shù): ```參數(shù) 說明 -b 批處理 -c 顯示完整的命令 -I 忽略失效過程 -s 保密模式 -S 累積模式 -i< 時間 > 設置間隔時間 -u< 用戶名 > 指定用戶名 -p< 進程號 > 指定進程 -n< 次數(shù) > 循環(huán)顯示的次數(shù)

  4. 使用案例

案例 1:

\#top
top - 10:03:56 up 26 min, 1 user, load average:0.00,0.00,0.00
Tasks:101 total,  1 running,100 sleeping,  0 stopped,  0 zombie
Cpu(s): 0.4%us, 0.8%sy, 0.0%ni,97.3%id, 1.4%wa, 0.0%hi, 0.1%si, 0.0%st
Mem:  1922432k total,  156380k used, 1766052k free,   13788k buffers
Swap: 1048568k total,       0k used, 1048568k free,   63608k cached
\
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                   
 1653 root      20   0 15032 1096  836 R  2.0  0.1   0:00.01 top                                                       
    1 root      20   0 19356 1528 1228 S  0.0  0.1   0:02.58 init                                                      
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                  
3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0 ```  
省略部分顯示結果

分析:

- 前五行是當前系統(tǒng)情況整體的統(tǒng)計信息區(qū)。

- 具體介紹如下:
    - 第一行:任務隊列信息,同 uptime 命令的執(zhí)行結果,具體參數(shù)說明如下:
```10:03:56 :當前系統(tǒng)時間
up 26 min :系統(tǒng)連續(xù)運行的時間 (不重啟,不斷電,不關機)
1 user :當前有 1 個用戶登錄系統(tǒng)
load average:0.00,0.00,0.00      :;oad average 后面的三個數(shù)字分別是一分鐘,五分鐘,十五分鐘的負載情況。load average :數(shù)據(jù)是每隔五秒檢查一次活躍的進程數(shù),然后按特定算法算出的數(shù)值。如果這個數(shù)除以邏輯 CPU 的數(shù)量,結果高于 5 的時候就表明系統(tǒng)在超負荷運轉了。```

    - 第二行,Tasks----任務 (進程),具體信息說明如下:
系統(tǒng)目前有 101 個進程,目前有一個正在運行,100 個在 sleep,0 個進程 stopped,0 個僵死進程。

    - 第三行,CPU 狀態(tài)信息,具體屬性說明如下:
        - `0.4%us`: 用戶控件占用 CPU 的百分比
        - `0.8%sy`:  內核控件占用 CPU 的百分比
        - `0.0%ni`: 改變過優(yōu)先級的進程占用 CPU 的百分比
        - `97.3%id`: 空閑 CPU 百分比
        - `1.4%wa`:IO 等待占用的 CPU 的百分比
        - `0.0%hi`: 硬中斷占用 CPU 的百分比
        - `0.1%si`: 軟中斷占用 CPU 的百分比
        - `0.0%st`:虛擬機被 `hpyervisor` 偷去的 CPU 時間
        - 注釋:`hypervisor` 是一種運行在基礎物理服務器和操作系統(tǒng)之間的中間軟件層,可允許多個操作系統(tǒng)和應用共享硬件。也可叫做 VMM(虛擬機監(jiān)視器)。

        `hypervisor` 是一種在虛擬環(huán)境中的 “元” 操作系統(tǒng)。他們可以訪問服務器上包括磁盤和內存在內的所有物理服務設備,`hypervisor` 補單協(xié)調著這些硬件資源的訪問,也同時在各個虛擬機之間施加防護。當服務器啟動并執(zhí)行 `hypervisor` 時,他回家再所有虛擬機客戶端的操作系統(tǒng),同時會分配給每一臺虛擬機適量的內存,cpu,網絡,磁盤。

        備注:在這里 CPU 的使用比率和 win 上的概念不同,需要理解 linux 系統(tǒng)用戶空間和內核空間的相關知識!

    - 第四行,內存狀態(tài),具體信息如下:
        - `1922432k total`:物理內存總量 (20G)
        - `156380k used`:使用中的內存總量 (1.5G)
        - `1766052k free`:空閑內存總量 (17.5G)
        - `13788k buffers`:緩存的內存量 (137M)

    - 第五行,swap 交換分區(qū)信息,具體說明如下:
        - `1048568k total` :交換區(qū)總量 (10G)
        - `0k used `:使用的交換區(qū)總量 (0K)
        - `1048568k free `:空閑交換區(qū)總量 (10 G)
        - `63608k cached` :緩沖的交換區(qū)總量 (6M)

        備注:第四行使用中的內存總量 (used) 指的是現(xiàn)在系統(tǒng)內核控制的內存書,空閑內存總量 (free) 是內核中還未納入其管控范圍的數(shù)量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現(xiàn)在可以被重復利用的內存,內核并不把這些可被重新使用的內存交還到 free 中去,因此在 linux 上 free 內存會越來越少,但不必為此擔心。

        如果出于習慣去計算可用內存書,這里有個近似的計算公式,第四行的 `free+` 第四行的 `buffers+` 第五行的 cached,按這個公式此臺服務器的可用內存:`1766052k + 13788k + 63608k =18.5G` 左右。

        對于內存監(jiān)控,在 top 里我們要時刻監(jiān)控第五行 swap 交換分區(qū)的 used,如果這個數(shù)值在不斷的變化,說明內核在不斷進行內存和 swap 的數(shù)據(jù)交換,這是真正的內存不夠用了

    - 第六行,空行

    - 第七行以下,各進程 (任務) 的狀態(tài)監(jiān)控,項目列信息說明如下:
        ```項目列表名稱
        說明
        PID
        進程 ID
        USER
        進程所有者
        PR
        進程優(yōu)先級
        NI
        nice 值。負值表示高優(yōu)先級,正值表示低優(yōu)先級
        VIRT
        進程使用的虛擬內存總量,單位 KB.VIRT=SWAP+RES
        RES
        進程使用的,違背換出的物理內存大小,單位 KB.RES=CODE+DATA
        SHR
        共享內存大小,單位 KB
        S
        進程狀態(tài).D(不可中斷的睡眠狀態(tài)),R,S,T(跟蹤 / 停止),Z
        %CPU
        上次更新到現(xiàn)在的 CPU 時間占用百分比
        %MEM
        進程使用的物理內存百分比
        TIME+ 
        進程使用的 CPU 時間總計,單位 1/100 秒
        COMMAND
        進程名稱 (命令行 / 命令名)

其他使用技巧

  1. 多核 CPU 監(jiān)控 在 top 命令基本視圖中,按鍵盤數(shù)字"1",可監(jiān)控每個邏輯 CPU 的狀況,再按數(shù)字鍵 1,就會返回 top 基本視圖界面

  2. 高亮顯示當前運行進程 在 top 命令的試圖下,按下字母鍵 b(打開 / 關閉加亮效果) 我們發(fā)現(xiàn) top 進程被加亮了,通配進程就是視圖第二行顯示的唯一的運行狀態(tài)的那個進程,可以通過字母鍵 y 關閉或打開運行狀態(tài)進程的加亮效果。

  3. 進程字段排序 默認進入 top 時,各進程是按照 CPU 的占用量來排序的,敲擊字母鍵 x(打開 / 關閉排序列的加亮效果),可以看到 top 默認的排序列是 "%CPU"。(centOS 貌似不行)

  4. 通過"shift+ 左右方向鍵" 可以向左或向右改變排序。(centOS 貌似不行)

  5. top 交互模式 (就是說在進入 top 命令基本視圖中輸入,類似與 vim) 在 top 命令執(zhí)行過程中可以使用的一些交互命令。這些命令都是單字母的,如果再命令行中使用的 s 選項,其中一些命令可能會被屏蔽。

命令 說明 h 顯示幫助畫面,給出一些簡短的命令總結說明 k 終止一個進程 i 忽略閑置的僵死進程。這是一個開關式命令 q 退出 top r 重新安排一個進程的優(yōu)先級別 S 切換到累計模式 s 改變兩次刷新之間的延遲時間 (單位為 s),如果有小數(shù),就換算成 m s。輸入 0 值則系統(tǒng)將不斷刷新,默認值是 5s f 或者 F 從當前顯示中添加或刪除項目 o 或 O(字母) 改變顯示項目的順序 l(小寫字母) 切換顯示平均負載和啟動時間信息 m 切換顯示內存信息 t 切換顯示進程和 CPU 狀態(tài)信息 c 切換顯示命令名稱和完整命令行 M 根據(jù)駐留內存大小進行排序 P 根據(jù) CPU 適用百分比大小進行排序 T 根據(jù)時間 / 累計時間進行排序 W 將當前設置寫入~/.toprc 文件中