linux每日命令(37):top命令

来源:https://www.cnblogs.com/huchong/archive/2018/12/07/10081322.html
-Advertisement-
Play Games

top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。下麵詳細介紹它的使用方法。top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前臺執行該命令,它將獨占前臺,直到用戶終止該程式為止.比較準確的說,top命令提供了 ...


top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。下麵詳細介紹它的使用方法。top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前臺執行該命令,它將獨占前臺,直到用戶終止該程式為止.比較準確的說,top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU使用.記憶體使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過互動式命令或者在個人定製文件中進行設定.

一.命令格式

top [參數]

二.命令功能

顯示當前系統正在執行的進程的相關信息,包括進程ID、記憶體占用率、CPU占用率等

三.命令參數

參數 描述
-b 批處理
-c 顯示完整的治命令
-I 忽略失效過程
-s 保密模式
-S 累積模式
-i<時間> 設置間隔時間
-u<用戶名> 指定用戶名
-p<進程號> 指定進程
-n<次數> 迴圈顯示的次數

四. 使用實例

1.顯示進程信息

命令:

top

輸出:

[hc@localhost ~]$ top

top - 09:22:56 up 6 days,  1:40,  3 users,  load average: 0.22, 0.31, 0.71
Tasks: 231 total,   1 running, 230 sleeping,   0 stopped,   0 zombie
%Cpu(s): 10.6 us, 12.1 sy,  0.0 ni, 77.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3863568 total,   473100 free,  1651284 used,  1739184 buff/cache
KiB Swap:  3145724 total,  3120012 free,    25712 used.  1837920 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND    
  2676 hc        20   0 3627652 339496  22160 S  16.3  8.8  17:50.00 gnome-she+ 
   689 polkitd   20   0  649880  17144   4636 S  10.3  0.4 678:56.95 polkitd    
  2051 root      20   0  358552  50640   6600 S   6.6  1.3   4:44.68 X          
101038 hc        20   0  771640  27384  17392 S   2.7  0.7   0:01.21 gnome-ter+ 
   721 dbus      20   0   61996   3708   1648 S   2.0  0.1 186:05.55 dbus-daem+ 
   680 root      20   0  396404   3816   3124 S   1.7  0.1 154:18.42 accounts-+ 
 86929 root      20   0  457956  51100   6944 S   1.3  1.3  15:59.97 uwsgi      
113983 hc        20   0  161972   2400   1620 R   0.7  0.1   0:00.11 top        
     9 root      20   0       0      0      0 S   0.3  0.0  28:14.62 rcu_sched  
   405 root      20   0       0      0      0 S   0.3  0.0   7:43.36 xfsaild/d+ 
   681 root      20   0   13216    600    572 S   0.3  0.0   0:31.09 rngd       
  1304 mongod    20   0 1025840  81704   4160 S   0.3  2.1  51:29.25 mongod     
  1869 mysql     20   0 1263256 112036   4784 S   0.3  2.9  10:32.82 mysqld     
  2909 hc        20   0  611472   7256   3592 S   0.3  0.2  54:46.85 gsd-accou+ 
 30239 root      20   0  453640  54536   3420 S   0.3  1.4  12:21.71 celery     
     1 root      20   0  125804   3544   2120 S   0.0  0.1   0:16.95 systemd    
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.44 kthreadd   

說明:

統計信息區:

前五行是當前系統情況整體的統計信息區。下麵我們看每一行信息的具體意義。

第一行,任務隊列信息,同 uptime 命令的執行結果,具體參數說明情況如下:

09:22:56 -- 當前系統時間
up 6 days, 1:40 -- 系統已經運行了6天1小時40分鐘(在這期間系統沒有重啟過)
3 users -- 當前有2個用戶登錄系統
load average: 0.22, 0.31, 0.71 -- load average後面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。
load average數據是每隔5秒鐘檢查一次活躍的進程數,然後按特定演算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。

第二行,Tasks — 任務(進程),具體信息說明如下:

系統現在共有231個進程,其中處於運行中的有1個,230個在休眠(sleep),stoped狀態的有0個,zombie狀態(僵屍)的有0個。

第三行,cpu狀態信息,具體屬性說明如下

10.6 us -- 用戶態占用CPU的百分比
12.1 sy -- 內核態占用CPU的百分比
0.0 ni -- 用做nice加權的進程分配的用戶態cpu占用CPU的百分比
77.3 id -- 空閑的cpu百分比
0.0 wa -- cpu等待磁碟寫入占用CPU的百分比
0.0 hi -- 硬中斷(Hardware IRQ)占用CPU的百分比
0.0 si -- 軟中斷(Software Interrupts)占用CPU的百分比
0.0 st
備註:在這裡CPU的使用比率和windows概念不同,需要理解linux系統用戶空間和內核空間的相關知識!

第四行,記憶體狀態,具體信息如下:

3863568 total -- 物理記憶體總量
473100 free -- 空閑記憶體總量
1651284 used -- 使用中的記憶體總量
1739184 buff/cache -- 緩存的記憶體量

第五行,swap交換分區信息,具體信息說明如下:

3145724 total -- 交換區總量
3120012 free -- 空閑交換區總量
25712 used -- 使用的交換區總量
1837920 avail Mem -- 表示可用於進程下一次分配的物理記憶體數量

備註:

第四行中使用中的記憶體總量(used)指的是現在系統內核控制的記憶體數,空閑記憶體總量(free)是內核還未納入其管控範圍的數量。納入內核管理的記憶體不見得都在使用中,還包括過去使用過的現在可以被重覆利用的記憶體,內核並不把這些可被重新使用的記憶體交還到free中去,因此在linux上free記憶體會越來越少,但不用為此擔心。

如果出於習慣去計算可用記憶體數,這裡有個近似的計算公式:第四行的free + 第四行的buff/cache,按這個公式此台伺服器的可用記憶體。

對於記憶體監控,在top里我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行記憶體和swap的數據交換,這是真正的記憶體不夠用了。

第六行,空行

第七行以下各進程(任務)的狀態監控,項目列信息說明如下:

列名 說明
PID 進程id
USER 進程所有者
PR 進程優先順序
NI nice值。負值表示高優先順序,正值表示低優先順序
VIRT 進程使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
RES 進程使用的、未被換出的物理記憶體大小,單位kb。RES=CODE+DATA
SHR 共用記憶體大小,單位kb
S 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程
%CPU 上次更新到現在的CPU時間占用百分比
%MEM 進程使用的物理記憶體百分比
TIME+ 進程使用的CPU時間總計,單位1/100秒
COMMAND 進程名稱(命令名/命令行)

2.顯示完整命令

命令:

top -c

輸出:

[hc@localhost ~]$ top -c

top - 10:01:50 up 6 days,  2:19,  3 users,  load average: 0.01, 0.04, 0.10
Tasks: 233 total,   1 running, 232 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.3 us, 10.8 sy,  0.0 ni, 83.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3863568 total,   451416 free,  1665668 used,  1746484 buff/cache
KiB Swap:  3145724 total,  3120012 free,    25712 used.  1823504 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                              
   689 polkitd   20   0  649880  17144   4636 S  10.0  0.4 682:30.53 /usr/lib/polkit-1/polkitd --no-debug 
  2676 hc        20   0 3646940 359304  22308 S   6.0  9.3  18:02.04 /usr/bin/gnome-shell                 
  2051 root      20   0  352052  44092   6600 S   3.3  1.1   4:50.20 /usr/bin/X :0 -background none -nor+ 
   721 dbus      20   0   61996   3708   1648 S   2.3  0.1 187:04.96 /usr/bin/dbus-daemon --system --add+ 
   680 root      20   0  396404   3816   3124 S   2.0  0.1 155:06.59 /usr/libexec/accounts-daemon         
101038 hc        20   0  772056  27784  17528 S   1.3  0.7   0:03.61 /usr/libexec/gnome-terminal-server   
 86929 root      20   0  457956  51100   6944 S   1.0  1.3  16:30.76 /home/hc/project/envs/autoAweme/bin+ 
  1869 mysql     20   0 1263256 112036   4784 S   0.7  2.9  10:35.24 /usr/libexec/mysqld --basedir=/usr + 
  2909 hc        20   0  611472   7256   3592 S   0.7  0.2  55:04.22 /usr/libexec/gsd-account             
     9 root      20   0       0      0      0 S   0.3  0.0  28:22.21 [rcu_sched]                          
   405 root      20   0       0      0      0 S   0.3  0.0   7:45.11 [xfsaild/dm-0]                       
  2641 hc        20   0   60172   2152   1580 S   0.3  0.1   0:00.27 /bin/dbus-daemon --config-file=/usr+ 
  2889 hc        20   0  797116  12812   6428 S   0.3  0.3   4:06.38 /usr/libexec/gsd-color               
 71994 hc        20   0  162116   2504   1704 R   0.3  0.1   0:00.03 top -c                               
     1 root      20   0  125804   3544   2120 S   0.0  0.1   0:16.97 /usr/lib/systemd/systemd --switched+ 
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.44 [kthreadd]                           
     3 root      20   0       0      0      0 S   0.0  0.0   1:26.89 [ksoftirqd/0]   

3.以批處理模式顯示程式信息

命令:

top -b

4.以累積模式顯示程式信息

命令:

top -S

5.設置信息更新次數

命令:

top -n 2

說明:

表示更新兩次後終止更新顯示

6.設置信息更新時間

命令:

top -d 3

說明:

表示更新周期為3秒

7.顯示指定的進程信息

命令:

top -p 30568

輸出:

[hc@localhost ~]$ top -p 30568

top - 10:04:42 up 6 days,  2:22,  3 users,  load average: 0.26, 0.09, 0.11
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  9.7 us, 12.3 sy,  0.0 ni, 77.9 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem :  3863568 total,   451040 free,  1665892 used,  1746636 buff/cache
KiB Swap:  3145724 total,  3120012 free,    25712 used.  1823304 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                              
 30568 root      20   0  310244  52392   3652 S   0.0  1.4   0:29.02 uwsgi       

五. 其他使用技巧

1.多U多核CPU監控

在top基本視圖中,按鍵盤數字“1”,可監控每個邏輯CPU的狀況:

輸出:

top - 09:52:33 up 6 days,  2:10,  3 users,  load average: 0.00, 0.01, 0.11
Tasks: 233 total,   2 running, 230 sleeping,   0 stopped,   1 zombie
%Cpu0  :  2.7 us,  9.2 sy,  0.0 ni, 88.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  3.4 us, 10.3 sy,  0.0 ni, 86.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3863568 total,   458724 free,  1659276 used,  1745568 buff/cache
KiB Swap:  3145724 total,  3120012 free,    25712 used.  1829944 avail Mem 

說明:
觀察上圖,伺服器有2個邏輯CPU,實際上是1個物理CPU。再按數字鍵1,就會返回到top基本視圖界面。

2.高亮顯示當前運行進程

在top基本視圖中,敲擊鍵盤“b”(打開/關閉加亮效果)
可以通過敲擊“y”鍵關閉或打開運行態進程的加亮效果。

3.進程欄位排序

預設進入top時,各進程是按照CPU的占用量來排序的, 敲擊鍵盤“x”(打開/關閉排序列的加亮效果)

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

5.top交互命令

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

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

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前提: 需要nuget Swashbuckle.AspNetCore 我暫時用的是 4.01 最新版本; 描述:解決 .net core webapi 上傳文件使用的是 IFormFile,在Swagger 介面描敘的時候很不友好,為解決介面文檔的友好描敘; 實際效果: 解決辦法: 步驟1 增加 S ...
  • [TOC] 介紹 檢測伺服器當前的性能,主要檢查的項目如下: 負載:uptime 內核信息: dmesg 記憶體:vmstat、free CPU:top、mpstat、 I/O:iostat 網路:sar 有些命令需要安裝sysstat包 負載:uptime 通過 命令可以快速的查看當前的伺服器的1分 ...
  • 安裝某virtual無法written,某博主指引替換system32下的uxtheme.dll重啟即可。照做後重啟…桌面沒了,只能看見堅強的某鳥壁紙。無奈,重啟,採用最近一次的正確配置等…無果;求助各路大牛:“系統文件都敢替換,hhhh……”,無語,問度娘:如果安全模式跟恢復正確配置都不行就重裝系 ...
  • 摘要 網上一些激活工具可能捆綁了木馬、病毒。使用激活工具有風險。使用線上KMS來激活系統則沒有這個風險。(自測至發佈日期仍然可用) (有能力的請支持正版windows系統) 將kms伺服器地址設置為kms.03k.org(線上可用的KMS伺服器都可以) 已管理員身份運行CMD輸入命令:slmgr / ...
  • awk 命令詳解 awk 是一種編程語言,用於在linux/nuix下對文本和數據進行處理。數據可以來自標準輸入、一個或多個文件,或其它命令的輸出。它支持用戶自定義函數和動態正則表達式等先進功能,是linux/unix下的一個強大的編程工具。它在命令行中使用,但更多是作為腳本來使用。 awk 的處理 ...
  • 背景 隨著博客越寫越多,難免會遇到需要插入圖片來說明的情況。 圖床選擇 首先調研了市面上的圖床服務,本著穩定長期的目標,過濾掉了打一槍換一個地方的野雞小網站,剩餘比較靠譜的優缺點如下。 |圖床|優點|缺點| | | | | |騰訊雲|免費 無需功能變數名稱|未來可能會收費| |七牛|免費|需要功能變數名稱和備案| ...
  • Zabbix trigger是zabbix 進行告警通知的設定條件 ,當監控獲取的值觸發了設定的條件時,會按照觸發器的設定,執行相應的action 操作 。在zabbix中為了比較方便的設定各種條件,zabbix為我們設計了相應的函數和操作符 。 一、創建觸發器觸發器可以是和模板關聯的,也可以是和主 ...
  • 一 註冊賬號和申請 1 Digital Ocean網址https://cloud.digitalocean.com,可直接通過郵箱註冊,會向郵箱發送驗證碼。在註冊後必須先充值5美元才可以使用,充值時可選擇paypal或者信用卡支付。 2 關於優惠。如果直接點擊官網鏈接註冊是沒有優惠的。如果你是在校大 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...