Linux 查看記憶體使用情況的幾種方法

来源:https://www.cnblogs.com/englyf/archive/2023/04/20/17335171.html
-Advertisement-
Play Games

在運行 Linux 系統的過程中為了讓電腦或者伺服器以最佳水平運行,常常需要監控記憶體統計信息。今天我們就來看看都有那些方法可以查看記憶體信息。 ...


*以下內容為本人的學習筆記,如需要轉載,請聲明原文鏈接 微信公眾號「ENG八戒」https://mp.weixin.qq.com/s/27UaVm5_FMhCnxB88pc0QA

在運行 Linux 系統的過程中為了讓電腦或者伺服器以最佳水平運行,常常需要監控記憶體統計信息。

那麼今天我們就來看看有哪些方法可以訪問所有相關信息並幫助管理員監控記憶體統計信息。

查看或者獲取 Linux 中的記憶體使用情況既可以通過命令的方式,也可以通過桌面端的GUI程式查看。

以下的過程,所有命令和結果都是使用 Linux 發行版 Ubuntu 18.04。

GUI 查看

如果你使用的環境是帶有圖形界面的 Linux 版本,那麼必定是支持使用圖形界面進行伺服器管理的。那麼,記憶體使用情況的可視化會使得某些數據集更加清晰自然。

如何訪問系統監視器:

  1. 導航到顯示應用程式。
  2. 在搜索欄中輸入 System Monitor 並訪問該應用程式。
  3. 選擇資源選項卡。
  4. 顯示實時記憶體消耗的圖形概覽,包括歷史信息。

命令獲取

虛擬文件 /proc/meminfo

在 linux 系統中,/proc/meminfo 是一個報告可用和已用記憶體量的虛擬文件,它包含有關係統記憶體使用情況以及內核使用的緩衝區和共用記憶體的實時信息。根據所討論的電腦體繫結構和操作系統版本,從該文件讀取的輸出可能略有不同。

輸入指令

cat /proc/meminfo

指令返回

命令 free

在命令終端中鍵入 free

數據表示已用/可用記憶體和以KB為單位的交換記憶體大小。

total 總安裝記憶體
used 正在運行的進程當前正在使用的記憶體(used= total – free – buff/cache)
free 未使用的記憶體(free= total – used – buff/cache)
shared 多個進程共用的記憶體
buffers 作系統保留的記憶體,在進程需要時分配為緩衝區
cached 存儲在 RAM 中最近使用的文件
buff/cache Buffers + Cache
available 可用於啟動新應用程式,無需交換的記憶體大小

和讀取 /proc/meminfo 文件相比,free 命令提供的信息較為精簡,但是它更容易理解。

為了更靈活輸出結果,free 命令可以添加多個選項標誌用來格式化輸出。下表列出了 free 命令最有用的選項標誌。

選項標誌 結果
-b 以 Byte 為單位輸出
-k 以 KB 為單位的輸出
-m 以 MB 為單位的輸出
-G 以 GB 為單位輸出
-l 詳細的低記憶體和高記憶體統計信息
-o 舊格式(無 -/+緩衝區/緩存行)
-t RAM + swap
-s 多少秒更新一次
-C 更新多少次

命令 vmstat

vmstat 命令是報告虛擬記憶體統計信息的有用工具。它的返回提供有關進程、記憶體、分頁、塊 IO、捕獲和 CPU 活動的一般信息。

這裡列舉一下每個值的解釋,方便大家在分析結果時查閱。

進程
r:等待運行時的進程數。
b:處於不可中斷睡眠狀態的進程數。

記憶體
swpd:使用的虛擬記憶體大小。
free:空閑記憶體大小。
buff:用作緩衝區的記憶體大小。
cache:用作緩存的記憶體大小。

交換區
si:從磁碟換入的記憶體(/s) 。
so:交換到磁碟的記憶體(/s)。

IO 塊
bi:從塊設備接收到的塊(塊/s)。
bo:發送到塊設備的塊(塊/s)。

系統
in:每秒中斷次數,包括時鐘。
cs:每秒上下文切換的次數。

CPU – 下麵都是占總 CPU 時間的百分比。
us:運行非內核代碼所花費的時間(用戶時間,包括nice time)
sy:運行內核代碼所花費的時間(系統時間)
id:空閑時間,在 Linux 2.5.41 之前,這包括 IO 等待時間。
wa:等待IO所花費的時間,在 Linux 2.5.41 之前,包含在 idle 中。
st:從虛擬機竊取的時間,在 Linux 2.6.11 之前,未知。

命令 top

top 命令可用於檢查每個進程的記憶體和 CPU 使用情況等。包含有以下信息:

正常運行時間
平均負荷
正在運行的任務數
登錄用戶數
CPU 數量/CPU 利用率
記憶體/交換區的系統進程

top 命令輸入後,數據會不斷更新,這樣你可以實時跟蹤進程狀況。

通過 top 命令,除了看到基本的記憶體信息外,還可以通過有限的交互界面和進程互操作。輸入 top 命令時還可以使用命令行選項來操縱和配置操作。

如果你需要瞭解關於 top 命令的所有可用選項的完整信息,可以通過 Linux 中的 man top 命令查看。

命令 htop

命令 htop 與命令 top 類似。但是,命令 htop 的真正優勢在於其用戶友好的操作環境和更強大的控制項。

命令 htop 輸出包含顏色高亮,為進程提供完整的命令行,以及垂直和水平滾動的功能。

對照上圖

  1. 頂部區域提供摘要信息並包含圖形儀錶和彙總信息統計。
  2. 接下來的部分按進程組織了詳細數據,這樣您就可以輕鬆地對單個進程執行操作,支持滑鼠直接點擊選中進程。
  3. 屏幕底部列出的快捷方式將使您能夠快速操作和配置進程,而省去輸入特定指令。

命令 htop 在這個發行版里其實沒有預設安裝,如果發現指令不存在,可以通過下麵的指令安裝

sudo apt install htop

學習可以等,時間不等人!

關註我,帶你學習編程領域更多核心技能!


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

-Advertisement-
Play Games
更多相關文章
  • 使用第三方jar包,完成get/set操作 Lombok,結合特殊的註解,實現setter和getter的自動生成 導入jar包 使用插件Lombok 在類里import 即可使用 import lombok.AllArgsConstructor; import lombok.Data; impor ...
  • 本文介紹基於Python中ArcPy模塊,對大量長時間序列柵格遙感影像文件的每一個像元進行多時序平均值的求取。 在遙感應用中,我們經常需要對某一景遙感影像中的全部像元的像素值進行平均值求取——這一操作很好實現,基於ArcMap軟體或者簡單的Python代碼就可以實現;但有時候,我們會需要結合同一地區 ...
  • 前言 我們日常開發過程,會有一些定時任務的代碼來統計一些系統運行數據,但是我們應用有需要部署多個實例,傳統的通過配置文件來控制定時任務是否啟動又太過繁瑣,而且還經常出錯,導致一些異常數據的產生 網上有很多分散式鎖的實現方案,基於redis、zk、等有很多,但是我的就是一個用了mysql和mongo的 ...
  • 教程簡介 PHP語法吸收了C語言、Java和Perl的特點,易於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程式嵌入到HTML(標準 ...
  • 教程簡介 EJB入門教程 - 從簡單的步驟瞭解EJB 3.0和3.1(Enterprise Java Bean)框架,從基本概念到高級概念,包括概述,環境設置,應用伺服器,容器,企業Bean,註釋,會話,無狀態會話,有狀態會話,消息驅動,實體Bean,持久性,遠程介面,查找,生命周期,介面,攔截器, ...
  • Python動態伺服器網頁(需要使用WSGI介面),基本實現步驟如下: 1.等待客戶端的鏈接,伺服器會收到一個http協議的請求數據報 2.利用正則表達式對這個請求數據報進行解析(請求方式、提取出文件的環境) 3.提取出文件的環境之後,利用截斷取片的方法將文件名轉化為模塊名稱 4.使用m = __i ...
  • 背景 最近小編接到一個獲取網站請求數據的需求,要求抓取網站某個頁面請求的數據。我使用Google Chrome瀏覽器查看了一下請求鏈接的傳入參數,發現需要傳入一個Token值才能獲取數據。於是我在Chrome中登錄後,通過Postman請求成功,並將Token存儲到了Cookie中。然而問題又來了, ...
  • 一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供後來者少踩坑吧。 二:WinDbg 分析 1. 為什麼會卡死 因為是窗體程式,理所當然就是看主線程此時正在做什麼? 可以用 ~0s ; k 看一下便知。 0:000> k # ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...