Linux中國

ps_mem:一個用於精確報告 Linux 核心內存用量的簡單 Python 腳本

ps_mem 是一個可以幫助我們精確獲取 Linux 中各個程序核心內存使用情況的簡單 python 腳本。雖然在 Linux 上有很多可用於查看內存使用情況的工具,比如 freevmstatsmemtop 等,但這個工具和其它的區別在於其精確顯示核心內存使用情況。

它會分別計算一個程序私有內存總量和共享內存總量,並以更準確的方式給出了總的內存使用量。很明顯的,它將幫助大家知道系統中哪個程序正在佔用更多的內存。

你可以通過包管理器、pip 、或直接運行 ps_mem.py 腳本等多種方式來安裝 ps_mem 工具。需要注意的是:需要有 root 許可權。

另外,推薦閱讀以下內存工具:

通過包管理器安裝 ps_mem

基於 RHEL 的系統默認倉庫就包含 ps_mem 工具,所以我們可以簡單地通過包管理器進行安裝。

對於 RHEL/CentOS ,使用 yum 包管理器 安裝 ps_mem 包:

$ sudo yum install ps_mem

對於Fedora ,使用 dnf 包管理器 安裝 ps_mem 包:

$ sudo dnf install ps_mem

對於 Arch Linux ,使用 pacman 包管理器 安裝 ps_mem 包:

$ sudo pacman -S ps_mem

通過 pip 安裝 ps_mem

pip 是在 Linux 上推薦使用的一種安裝 Python 包的工具。可以使用 pip 命令而不是包管理器去獲取最新的版本。使用 pip 包前,請確保你的系統上已安裝過 pip 包。否則,先使用發行版本的包管理器安裝 python-pip 包。

對於基於 Debian 的系統:

$ sudo apt-get install python-pip

對於基於 RHEL/CentOS 的系統:

$ sudo yum install python-pip

對於 Fedora

$ sudo dnf install python-pip

對於 openSUSE

$ sudo zypper install python-pip

對於基於 Arch Linux 的系統:

$ sudo pacman -S python-pip

最後,在 Linux 上運行 pip 工具安裝 ps_mem

$ sudo pip install ps_mem

直接運行 ps_mem.py 腳本

我們也可以從開發者 github 頁面下載文件,並直接運行 ps_mem.py 腳本。

$ git clone https://github.com/pixelb/ps_mem.git && cd ps_mem
$ sudo python ps_mem.py

ps_mem 使用方法

不帶任何參數直接運行 ps_mem 以精確獲取每個程序的的核心內存使用情況。

$ sudo ps_mem
 Private  +   Shared  =  RAM used   Program

  1.6 MiB + 438.5 KiB =   2.1 MiB   packagekitd
  1.7 MiB + 498.0 KiB =   2.1 MiB   indicator-application-service
912.0 KiB +   1.3 MiB =   2.2 MiB   window-stack-bridge
  2.0 MiB + 350.5 KiB =   2.3 MiB   gnome-keyring-daemon
  1.8 MiB + 575.0 KiB =   2.3 MiB   whoopsie
  2.4 MiB + 304.5 KiB =   2.7 MiB   systemd-journald
  2.7 MiB + 157.5 KiB =   2.8 MiB   ibus-engine-simple
  2.7 MiB + 182.0 KiB =   2.9 MiB   ibus-dconf
  2.7 MiB + 332.5 KiB =   3.0 MiB   NetworkManager
  3.1 MiB + 169.5 KiB =   3.2 MiB   polkitd
  1.9 MiB +   1.7 MiB =   3.6 MiB   systemd (2)
  3.4 MiB + 172.5 KiB =   3.6 MiB   deja-dup-monitor
  2.9 MiB + 685.0 KiB =   3.6 MiB   zeitgeist-datahub
  2.9 MiB + 848.0 KiB =   3.7 MiB   python2.7
. . . . . .
222.1 MiB +   9.4 MiB = 231.5 MiB   compiz
286.2 MiB +  11.8 MiB = 298.0 MiB   firefox
------------------------------                          1.3 GiB
=================================

輸出中列印出全路徑:

$ sudo ps_mem -s
 Private  +   Shared  =  RAM used   Program

  3.2 MiB + 951.0 KiB =   4.1 MiB   /usr/lib/evolution/evolution-addressbook-factory
  3.7 MiB + 826.5 KiB =   4.5 MiB   /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
  3.7 MiB + 853.0 KiB =   4.6 MiB   /usr/lib/unity-settings-daemon/unity-fallback-mount-helper
. . .  . . .
131.9 MiB + 168.0 KiB = 132.1 MiB   /usr/sbin/mysqld
222.1 MiB +   9.4 MiB = 231.5 MiB   /usr/bin/compiz
286.2 MiB +  11.8 MiB = 298.1 MiB   /usr/lib/firefox/firefox
------------------------------                          1.3 GiB
=================================

只顯示特定的 PID 列表的內存使用情況:

$ sudo ps_mem -p 2886,4386
 Private  +   Shared  =  RAM used   Program

 13.5 MiB +   2.9 MiB =  16.4 MiB   gnome-terminal-server
286.2 MiB +  11.8 MiB = 298.0 MiB   firefox
------------------------------                        314.4 MiB
=================================

每 N 秒列印進程內存。以下命令每 2 秒報告一次內存使用情況:

$ sudo ps_mem w 2

只顯示內存總量:

$ sudo ps_mem -t
1329884160

via: http://www.2daygeek.com/ps_mem-report-core-memory-usage-accurately-in-linux/

作者:2DAYGEEK 譯者:xllc 校對: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中國