Linux中國

如何查看 Linux 下 CPU、內存和交換分區的佔用率?

在 Linux 下有很多可以用來查看內存佔用情況的命令和選項,但是我並沒有看見關於內存佔用率的更多的信息。

在大多數情況下我們只想查看內存使用情況,並沒有考慮佔用的百分比究竟是多少。如果你想要了解這些信息,那你看這篇文章就對了。我們將會詳細地在這裡幫助你解決這個問題。

這篇教程將會幫助你在面對 Linux 伺服器下頻繁的內存高佔用情況時,確定內存使用情況。

而在同時,如果你使用的是 free -m 或者 free -g,佔用情況描述地也並不是十分清楚。

這些格式化命令屬於 Linux 高級命令。它將會對 Linux 專家和中等水平 Linux 使用者非常有用。

方法-1:如何查看 Linux 下內存佔用率?

我們可以使用下面命令的組合來達到此目的。在該方法中,我們使用的是 freeawk 命令的組合來獲取內存佔用率。

如果你正在尋找其他有關於內存的文章,你可以導航到如下鏈接。這些文章有 free 命令smem 命令ps_mem 命令vmstat 命令查看物理內存大小的多種方式

要獲取不包含百分比符號的內存佔用率:

$ free -t | awk 'NR == 2 {print "Current Memory Utilization is : " $3/$2*100}'
或
$ free -t | awk 'FNR == 2 {print "Current Memory Utilization is : " $3/$2*100}'

Current Memory Utilization is : 20.4194

要獲取不包含百分比符號的交換分區佔用率:

$ free -t | awk 'NR == 3 {print "Current Swap Utilization is : " $3/$2*100}'
或
$ free -t | awk 'FNR == 3 {print "Current Swap Utilization is : " $3/$2*100}'

Current Swap Utilization is : 0

要獲取包含百分比符號及保留兩位小數的內存佔用率:

$ free -t | awk 'NR == 2 {printf("Current Memory Utilization is : %.2f%"), $3/$2*100}'
或
$ free -t | awk 'FNR == 2 {printf("Current Memory Utilization is : %.2f%"), $3/$2*100}'

Current Memory Utilization is : 20.42%

要獲取包含百分比符號及保留兩位小數的交換分區佔用率:

$ free -t | awk 'NR == 3 {printf("Current Swap Utilization is : %.2f%"), $3/$2*100}'
或
$ free -t | awk 'FNR == 3 {printf("Current Swap Utilization is : %.2f%"), $3/$2*100}'

Current Swap Utilization is : 0.00%

如果你正在尋找有關於交換分區的其他文章,你可以導航至如下鏈接。這些鏈接有 使用 LVM(邏輯盤卷管理)創建和擴展交換分區創建或擴展交換分區的多種方式創建/刪除和掛載交換分區文件的多種方式

鍵入 free 命令會更好地作出闡釋:

$ free
              total        used        free      shared  buff/cache   available
Mem:          15867        3730        9868        1189        2269       10640
Swap:         17454           0       17454
Total:        33322        3730       27322

細節如下:

  • free:是一個標準命令,用於在 Linux 下查看內存使用情況。
  • awk:是一個專門用來做文本數據處理的強大命令。
  • FNR == 2:該命令給出了每一個輸入文件的行數。其基本上用於挑選出給定的行(針對於這裡,它選擇的是行號為 2 的行)
  • NR == 2:該命令給出了處理的行總數。其基本上用於過濾給出的行(針對於這裡,它選擇的是行號為 2 的行)
  • $3/$2*100:該命令將列 3 除以列 2 並將結果乘以 100。
  • printf:該命令用于格式化和列印數據。
  • %.2f%:默認情況下,其列印小數點後保留 6 位的浮點數。使用後跟的格式來約束小數位。

方法-2:如何查看 Linux 下內存佔用率?

我們可以使用下面命令的組合來達到此目的。在這種方法中,我們使用 freegrepawk 命令的組合來獲取內存佔用率。

要獲取不包含百分比符號的內存佔用率:

$ free -t | grep Mem | awk '{print "Current Memory Utilization is : " $3/$2*100}'
Current Memory Utilization is : 20.4228

要獲取不包含百分比符號的交換分區佔用率:

$ free -t | grep Swap | awk '{print "Current Swap Utilization is : " $3/$2*100}'
Current Swap Utilization is : 0

要獲取包含百分比符號及保留兩位小數的內存佔用率:

$ free -t | grep Mem | awk '{printf("Current Memory Utilization is : %.2f%"), $3/$2*100}'
Current Memory Utilization is : 20.43%

要獲取包含百分比符號及保留兩位小數的交換空間佔用率:

$ free -t | grep Swap | awk '{printf("Current Swap Utilization is : %.2f%"), $3/$2*100}'
Current Swap Utilization is : 0.00%

方法-1:如何查看 Linux 下 CPU 的佔用率?

我們可以使用如下命令的組合來達到此目的。在這種方法中,我們使用 topprintawk 命令的組合來獲取 CPU 的佔用率。

如果你正在尋找其他有關於 CPU(LCTT 譯註:原文誤為 memory)的文章,你可以導航至如下鏈接。這些文章有 top 命令htop 命令atop 命令Glances 命令

如果在輸出中展示的是多個 CPU 的情況,那麼你需要使用下面的方法。

$ top -b -n1 | grep ^%Cpu
%Cpu0  :  5.3 us,  0.0 sy,  0.0 ni, 94.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.0 us,  0.0 sy,  0.0 ni, 94.7 id,  0.0 wa,  0.0 hi,  5.3 si,  0.0 st
%Cpu3  :  5.3 us,  0.0 sy,  0.0 ni, 94.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  : 10.5 us, 15.8 sy,  0.0 ni, 73.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu5  :  0.0 us,  5.0 sy,  0.0 ni, 95.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu6  :  5.3 us,  0.0 sy,  0.0 ni, 94.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu7  :  5.3 us,  0.0 sy,  0.0 ni, 94.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

要獲取不包含百分比符號的 CPU 佔用率:

$ top -b -n1 | grep ^%Cpu | awk '{cpu+=$9}END{print "Current CPU Utilization is : " 100-cpu/NR}'
Current CPU Utilization is : 21.05

要獲取包含百分比符號及保留兩位小數的 CPU 佔用率:

$ top -b -n1 | grep ^%Cpu | awk '{cpu+=$9}END{printf("Current CPU Utilization is : %.2f%"), 100-cpu/NR}'
Current CPU Utilization is : 14.81%

方法-2:如何查看 Linux 下 CPU 的佔用率?

我們可以使用如下命令的組合來達到此目的。在這種方法中,我們使用的是 topprint/printfawk 命令的組合來獲取 CPU 的佔用率。

如果在單個輸出中一起展示了所有的 CPU 的情況,那麼你需要使用下面的方法。

$ top -b -n1 | grep ^%Cpu
%Cpu(s): 15.3 us, 7.2 sy, 0.8 ni, 69.0 id, 6.7 wa, 0.0 hi, 1.0 si, 0.0 st

要獲取不包含百分比符號的 CPU 佔用率:

$ top -b -n1 | grep ^%Cpu | awk '{print "Current CPU Utilization is : " 100-$8}'
Current CPU Utilization is : 5.6

要獲取包含百分比符號及保留兩位小數的 CPU 佔用率:

$ top -b -n1 | grep ^%Cpu | awk '{printf("Current CPU Utilization is : %.2f%"), 100-$8}'
Current CPU Utilization is : 5.40%

如下是一些細節:

  • top:是一種用於查看當前 Linux 系統下正在運行的進程的非常好的命令。
  • -b:選項允許 top 命令切換至批處理的模式。當你從本地系統運行 top 命令至遠程系統時,它將會非常有用。
  • -n1:迭代次數。
  • ^%Cpu:過濾以 %CPU 開頭的行。
  • awk:是一種專門用來做文本數據處理的強大命令。
  • cpu+=$9:對於每一行,將第 9 列添加至變數 cpu
  • printf:該命令用于格式化和列印數據。
  • %.2f%:默認情況下,它列印小數點後保留 6 位的浮點數。使用後跟的格式來限制小數位數。
  • 100-cpu/NR:最終列印出 CPU 平均佔用率,即用 100 減去其併除以行數。

via: https://www.2daygeek.com/linux-check-cpu-memory-swap-utilization-percentage/

作者:Vinoth Kumar 選題:lujun9972 譯者:An-DJ 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國