鍍金池/ 教程/ Linux/ top命令詳解示例
which命令
ss命令
cp命令使用示例
ps命令
find命令
grep命令
scp命令
rmdir命令
df命令示例
less命令
du命令示例
chown命令示例
route命令
ping命令
more命令
mv命令
ln命令
mkdir命令
rm命令
find命令常用參數(shù)示例
cat命令
find命令-xargs參數(shù)
touch命令
traceroute命令
gzip命令示例
date命令
ls命令
vmstat命令
lsof命令
diff命令
head命令
watch命令
ifconfig命令
cd命令
tail命令
iostat命令
chgrp命令示例
free命令
find命令-exec參數(shù)
tar命令打包解壓示例
cal命令
at命令
netstat命令
wc命令
chmod命令示例
pwd命令
top命令詳解示例
crontab命令(Linux定時任務(wù))
whereis命令
Linux命令大全教程
nl命令
rcp命令
locate命令

top命令詳解示例

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

1.命令格式

top [參數(shù)]

2.命令功能

顯示當前系統(tǒng)正在執(zhí)行的進程的相關(guān)信息,包括進程ID、內(nèi)存占用率、CPU占用率等

3.命令參數(shù)

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

4.使用實例

實例1:顯示進程信息

命令:

top

輸出:

top - 04:23:18 up  2:34,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 115 total,   1 running, 114 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999936 total,   603084 free,   144560 used,   252292 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   631400 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
  3186 yiibai    20   0  157676   2164   1528 R  0.7  0.2   0:00.10 top
   653 root      20   0  302436   6016   4648 S  0.3  0.6   1:07.99 vmtoolsd
  1011 root      20   0  553156  18448   5792 S  0.3  1.8   0:04.25 tuned
  2250 root      20   0       0      0      0 S  0.3  0.0   0:23.23 kworker/0:0
  2276 yiibai    20   0  142972   2332   1048 S  0.3  0.2   0:06.39 sshd
     1 root      20   0  128092   6708   3956 S  0.0  0.7   0:05.17 systemd
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd
     3 root      20   0       0      0      0 S  0.0  0.0   0:01.03 ksoftirqd/0
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
     9 root      20   0       0      0      0 S  0.0  0.0   0:03.06 rcu_sched
    10 root      rt   0       0      0      0 S  0.0  0.0   0:00.68 watchdog/0
    12 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 khelper
    13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
    14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
......

說明:
統(tǒng)計信息區(qū):
前五行是當前系統(tǒng)情況整體的統(tǒng)計信息區(qū)。下面我們看每一行信息的具體意義。

  • 第一行,任務(wù)隊列信息,同 uptime 命令的執(zhí)行結(jié)果,具體參數(shù)說明情況如下:

    • 04:23:18 — 當前系統(tǒng)時間
    • up 2:34 — 系統(tǒng)已經(jīng)運行了2小時34分鐘(在這期間系統(tǒng)沒有重啟過!)
    • 2 users — 當前有2個用戶登錄系統(tǒng)
    • load average: 0.00, 0.01, 0.05load average后面的三個數(shù)分別是1分鐘、5分鐘、15分鐘的負載情況。
    • load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進程數(shù),然后按特定算法計算出的數(shù)值。如果這個數(shù)除以邏輯CPU的數(shù)量,結(jié)果高于5的時候就表明系統(tǒng)在超負荷運轉(zhuǎn)了。
  • 第二行,Tasks — 任務(wù)(進程),具體信息說明如下:
    系統(tǒng)現(xiàn)在共有115個進程,其中處于運行中的有1個,114個在休眠(sleep),stoped狀態(tài)的有0個,zombie狀態(tài)(僵尸)的有0個。

  • 第三行,cpu狀態(tài)信息,具體屬性說明如下:

    • 0.0 us — 用戶空間占用CPU的百分比。
    • 0.3 sy — 內(nèi)核空間占用CPU的百分比。
    • 0.0 ni — 改變過優(yōu)先級的進程占用CPU的百分比
    • 99.7 id — 空閑CPU百分比
    • 0.0 wa — IO等待占用CPU的百分比
    • 0.0 hi — 硬中斷(Hardware IRQ)占用CPU的百分比
    • 0.0 si — 軟中斷(Software Interrupts)占用CPU的百分比
      備注:在這里CPU的使用比率和windows概念不同,需要理解linux系統(tǒng)用戶空間和內(nèi)核空間的相關(guān)知識!
  • 第四行,內(nèi)存狀態(tài),具體信息如下:

    • 999936 total — 物理內(nèi)存總量(1GB)
    • 144560 used — 使用中的內(nèi)存總量(140M)
    • 603084 free — 空閑內(nèi)存總量(600M)
    • 252292 buffers/cache — 緩存的內(nèi)存量 (169M)
  • 第五行,swap交換分區(qū)信息,具體信息說明如下:

    • 2097148 total — 交換區(qū)總量
    • 0k used — 使用的交換區(qū)總量
    • 2097148 free — 空閑交換區(qū)總量
    • 631400 avail Mem — 緩沖的交換區(qū)可用內(nèi)存量

    備注:第四行中使用中的內(nèi)存總量(used)指的是現(xiàn)在系統(tǒng)內(nèi)核控制的內(nèi)存數(shù),空閑內(nèi)存總量(free)是內(nèi)核還未納入其管控范圍的數(shù)量。納入內(nèi)核管理的內(nèi)存不見得都在使用中,還包括過去使用過的現(xiàn)在可以被重復利用的內(nèi)存,內(nèi)核并不把這些可被重新使用的內(nèi)存交還到free中去,因此在linux上free內(nèi)存會越來越少,但不用為此擔心。
    如果出于習慣去計算可用內(nèi)存數(shù),這里有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的cached,按這個公式此臺服務(wù)器的可用內(nèi)存。
    對于內(nèi)存監(jiān)控,在top里我們要時刻監(jiān)控第五行swap交換分區(qū)的used,如果這個數(shù)值在不斷的變化,說明內(nèi)核在不斷進行內(nèi)存和swap的數(shù)據(jù)交換,這是真正的內(nèi)存不夠用了。

  • 第六行,空行。

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

其他使用技巧:

  • 1.多U多核CPU監(jiān)控
    top基本視圖中,按鍵盤數(shù)字“1”,可監(jiān)控每個邏輯CPU的狀況:

    觀察上圖,服務(wù)器有0個邏輯CPU,實際上是1個物理CPU。再按數(shù)字鍵1,返回到top基本視圖界面。

  • 2.高亮顯示當前運行進程
    敲擊鍵盤“b”(打開/關(guān)閉加亮效果),top的視圖變化如下:

如上圖中,進程id9,3211的“top”進程被加亮了,top進程就是視圖第二行顯示的唯一的運行態(tài)(runing)的那個進程,可以通過敲擊“y”鍵關(guān)閉或打開運行態(tài)進程的加亮效果。

  • 3.進程字段排序
    默認進入top時,各進程是按照CPU的占用量來排序的,在下圖中進程ID為32374的python進程排在第一(cpu占用94%),進程ID為653vmtools進程排在第二(cpu占用2.0%)。

敲擊鍵盤“x”(打開/關(guān)閉排序列的加亮效果),top的視圖變化如下:

可以看到,top默認的排序列是“%CPU”。

  • 4. 通過”shift + >”或”shift + <”可以向右或左改變排序列

下圖是按一次”shift + >”的效果圖,視圖現(xiàn)在已經(jīng)按照%MEM來排序。

實例2:顯示 完整命令

命令:

top -c

輸出:

top - 09:38:06 up  3:23,  2 users,  load average: 2.40, 2.19, 1.37
Tasks: 112 total,   4 running, 107 sleeping,   1 stopped,   0 zombie
%Cpu(s): 97.2 us,  1.8 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  1.1 si,  0.0 st
KiB Mem :   999936 total,    74648 free,   130200 used,   795088 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   672960 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
  3237 yiibai    20   0  123156   4376   1904 R 42.5  0.4  10:45.19 python run+
  3753 yiibai    20   0  123152   4380   1908 R 42.5  0.4   1:38.90 python run+
   653 root      20   0  302436   6024   4648 S  2.3  0.6   1:50.29 /usr/bin/v+
  3709 root      20   0       0      0      0 S  2.0  0.0   0:05.93 [kworker/u+
   652 chrony    20   0  115848   1892   1496 S  1.7  0.2   0:00.53 /usr/sbin/+
   476 root      20   0   34876   3152   2828 S  0.3  0.3   0:00.92 /usr/lib/s+
  2250 root      20   0       0      0      0 S  0.3  0.0   0:38.98 [kworker/0+
     1 root      20   0  128092   6708   3956 S  0.0  0.7   0:05.51 /usr/lib/s+
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.02 [kthreadd]
     3 root      20   0       0      0      0 S  0.0  0.0   0:15.97 [ksoftirqd+
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 [migration+
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [rcu_bh]
     9 root      20   0       0      0      0 R  0.0  0.0   0:07.42 [rcu_sched]
    10 root      rt   0       0      0      0 S  0.0  0.0   0:05.48 [watchdog/+

實例3:以批處理模式顯示程序信息

命令:

top -b

實例4:以累積模式顯示程序信息

命令:

top -S

實例5:設(shè)置信息更新次數(shù)

命令:

top -n 2

說明:表示更新兩次后終止更新顯示

實例6:設(shè)置信息更新時間

命令:

top -d 3

說明:表示更新周期為3秒

實例7:顯示指定的進程信息

命令:

top -p 3237
top - 09:40:32 up  3:26,  2 users,  load average: 3.07, 2.53, 1.62
Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie
%Cpu(s): 91.8 us,  2.4 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  5.8 si,  0.0 st
KiB Mem :   999936 total,    71276 free,   130352 used,   798308 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   672960 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
  3237 yiibai    20   0  123156   4376   1904 R 34.1  0.4  11:46.46 python
  • 5.top交互命令

top 命令執(zhí)行過程中可以使用的一些交互命令。這些命令都是單字母的,如果在命令行中使用了s 選項, 其中一些命令可能會被屏蔽。

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