linux如何查看内存占用进程

linux查看进程占用的内存

top 命令:当输入top 时,RES 列显示实际的内存使用情况。
htop命令:输入htop可以直接查看进程内存和附加资源。
ps 命令 + grep:ps aux |排序-%mem |头。
%MEM 列显示内存使用百分比。
/proc 文件系统:cat /proc/[PID]/status | grep VmRSS,VmRSS 显示物理内存使用情况。

不要这样做:不要使用 dflh 等无效命令检查内存。

Linux系统中查看执行中的进程占用内存量的方法

哎呀,我需要和你谈谈这件事。
在进行服务器维护时,我总是需要查看哪个进程使用了​​大量内存。

想一想,在Linux系统上,查看进程占用内存最直接的方法就是查看/proc目录。
这东西实在是太神奇了。
每个进程都有一个对应的目录,里面充满了信息。

比如,那年我在北京的时候,一个客户端服务器突然崩溃了。
我查了半天,发现是mysqld进程占用了大量内存。
我只是想,我应该找到一种简单的方法来查看它。

当时我没有安装什么特别复杂的监控软件,所以就用了命令行。
首先你需要知道这个进程的PID。
使用 ps aux | grep mysqld 并在输出中找到该行的 PID 号。
我们假设它是 1 2 3 4
接下来,在终端中输入 cat /proc/1 2 3 4 /status。
你看,这个/proc/1 2 3 4 就是PID为1 2 3 4 的进程的目录,按回车后,就出来了一大堆信息,全是英文,看上去相当乱。

不过别慌,我告诉你一些要点,你可以查一下:
VmRSS:这就是要点!告诉我这个进程现在占用了多少物理内存,以 KB 为单位。
例如,如果看到VmRSS: 1 02 4 0 kB,则表示占用了1 0 MB 物理内存。
VmPeak:这是最大虚拟内存值,是应用到的最大虚拟内存,可能包括无用的位。
VmSize:这是当前进程使用的虚拟内存大小,可能小于VmPeak。

当年我检查mysqld时,看到VmRSS是5 GB。
哦,那太好了!我很快就想到了优化的方法。

您提到的字段都是正确的。
VmLck是分块内存,VmHWM是物理内存最大值,VmData、VmStk等都是分段内存使用情况。

所以最愚蠢、最直接的方法是使用 cat /proc/[pid]/status。
当然,现在还有更方便的命令,比如top和htop。
按M对内存进行排序,更直观。
不过,知道这个/proc方法在关键时刻还是可以用的。

哦,顺便说一句,要获取PID,除了ps aux |进程名grep,还有进程名pidof,但是pidof有时不可靠,特别是当有很多同名进程时。
当时我遇到了pidof httpd,上面列出了一堆,我必须一一阅读。
所以ps方法更可靠。

希望我的旧经验对你有用!不要只阅读理论,尝试一下你就会明白。