Linux下查询进程占用内存的5种方式!还有谁不会?

以下是在 Linux 中检查进程内存的一些技巧。

状态文件是最直接的。
在/proc/PID/status中显示VmRSS,单位为KB。
我上周刚刚处理了一台宕机的服务器,并依靠它进行定位。

完整的pmap命令信息。
pmap -x PID 直接看。
启动参数全部列出,适合控制复杂的过程。

smaps 命令是最准确的。
猫 /proc/PID/smaps | grep '^Rss:' | awk '{sum+=$2 }END{打印总和}'。
将所有物理页添加在一起。
我在这个项目中使用的是这个,误差很小。

ps 命令足够快。
ps -e -o pid、comm、rsz | awk '$1 ~/PID/'。
rsz是物理内存。
常用于开发和调试过程中。
top 命令是最方便的。
top 按 M 对内存进行排序。
RES 是物理内存。
实时看到变化是最有趣的。

如何选择?只需看看哪一个最适合您。
使用 smaps 进行准确检查。
使用ps进行快速定位。

linux查看进程占用的内存

顶部 -o %mem 顶部 辅助 |排序 -k 4 -nr |头 -n 1 0 斯梅姆 猫 /proc/1 2 3 4 /status | grepVmRSS 选择合适的工具,直接查看占用内存最多的 1 0 个进程。

linux系统top查看进程占用内存不高,但是操作系统内存不知去哪了

这就是原因。
请随意浏览缓存并按 M 对顶部进行排序。
不要相信上面的评论。
请参阅/proc/meminfo。

linux怎么看占用内存

你好,我需要和你谈谈这件事。
去年我在摆弄服务器,那家伙一直有内存问题。
我来说说我当时的想法吧。

第一个是/proc/meminfo,这个东西很冗长。
记得有一次系统突然卡住了,我查看/proc/meminfo,发现MemAvailable很低,只有几MB。
我知道这一点,我需要快速扩展容量或者保存程序。
这样做有什么好处呢?无需安装软件,直接看,数据准确。
但缺点是太繁琐,逐行阅读不直观。

然后是我经常使用的 free -h。
你看,你可以运行 free -h 来一目了然地看到总共有多少 GB,有多少正在使用,有多少是免费的。
上次我在虚拟机上安装系统的时候,没有看到这个。
安装程序后,所有内存都被占用,系统像狗一样卡住了。
后来我养成了安装系统后free -h看看的习惯。
这非常适合快速检查,而无需考虑太多。

所以top和htop。
这两个与过程有关。
给我印象最深的是,一旦在服务器上运行特定的Python脚本,内存就会激增。
我点击了顶部,按M排序,立即看到了脚本。
htop比较好,颜色标注清晰,哪道工序占比多一目了然。
但必须安装htop。
上次我在CentOS上差点没安装好,花了我很长时间。
这适合监控。
如果看到哪个进程异常,直接kill掉。

我很少遇到atop和nmon。
最重要的是专业品质,可以看到内存泄漏。
nmon是一打开就看到所有东西的类型,包括内存、CPU、硬盘。
但我认为它有点花哨,而且对我来说没有免费和顶级那么实用。

最后是 ps 和 memstat。
这适合深挖。
上次 Java 程序内存溢出时,我使用 ps aux --sort=-%mem 来查看哪个进程占用了更多内存,然后使用 memstat 查看该进程的内存详细信息。
这个比较专业,一般人不会用。

一般我只是尝试 free -h 或 htop 看看是否不起作用,然后使用 top 查找进程,最后在确实不起作用时使用 /proc/meminfo 或 memstat 。
您看,就是这么简单,并且可以解决大多数问题。
如果您使用 Linux,您需要了解这些方法并决定哪一种适合您的情况。