ps_mem:一个用于精确报告 Linux 核心内存用量的简单 Python 脚本
创始人
2024-03-01 20:03:20
0

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之父:Vibe编...
闻乐 发自 凹非寺 量子位 | 公众号 QbitAI Linus访...
2025-12-11 17:46:59
AI“断案”、黄金救援.....
高空抛物、电瓶车上楼、老人意外跌倒……在小区治理与安全防护的工作中...
2025-11-14 23:15:40
阜阳市颍州区:启用AI市容...
“这位商贩您好,您属于违规占道经营,请立即转移到合适区域……”近日...
2025-11-12 17:44:32
辽宁一农户17只羊一夜之间...
极目新闻记者 赵贝 近日,有网络视频显示,在辽宁阜新彰武县,一农户...
2025-11-11 22:15:57
AI搜索摘要优化实战:让你...
当用户在AI搜索引擎中提问时,你的品牌是否能被生成式摘要“点名推荐...
2025-11-01 06:14:24
剑指英伟达?高通杀入AI芯...
AI芯片战场硝烟再起,又有巨头搅局! 高通最新宣布进军人工智能芯片...
2025-10-28 12:18:31

热门资讯

《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
硬核观察 #1245 Open... #1 OpenAI 悄然删除禁止将 ChatGPT 用于 “军事和战争” 的禁令在 1 月 10 日...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
如何理解Apache 2.0许... 提要:Apache 2.0许可证中的专利许可条款使得开源代码可以安全使用,但它经常被误解。Apach...