linux怎么查看进程占用内存

2 02 2 年,我在某个城市,需要查看一个进程的内存占用,那时候我试了ps命令,ps-eopid,comm,%mem,vsz,rss|sort-nrk3 ,当时我也懵,我后来才反应过来,这个命令可以列出所有进程的PID、命令名、内存占用百分比,还有虚拟内存大小和物理内存占用,挺实用的。
然后我又试了top命令,top-o%MEM,这个命令动态显示进程内存占用,挺方便的,我按M就可以按内存占用排序了。
还有vmstat命令,vmstat-s,这个命令可以显示系统内存统计摘要,挺有用的,但是它侧重的是系统整体内存状态,不是单个进程。
后来我又试了htop,这个工具比top强大多了,支持彩色显示、鼠标操作,内存分类也更直观。
还有ProcessExplorer,这个图形化界面工具,适合桌面用户,提供进程树和详细内存分类。
我还用Python脚本试了试,通过psutil库,可以遍历所有进程,打印PID、名称和物理内存占用,挺方便的。
我还用C语言通过/proc文件系统读取了内存占用,原理是读取/proc/[PID]/statm文件,第二列为RSS,需要乘以系统页大小转换成字节。
最后,我选了ps或top快速检查,htop动态监控,Python脚本或/proc文件系统深度分析,gSystemMonitor或ksysguard图形环境。
我注意到了单位差异,VSZ包含共享库,可能远大于RSS,还有在容器环境中,需要进入容器或使用cgroups统计,还有查看其他用户进程需要sudo权限。
通过这些方法,我灵活选择了适合场景的工具来监控进程内存占用。

linux查看进程占用内存大小

ps -e --sort=-rss | awk '{print $2 , $5 /1 02 4 "MB"}' top -o %MEM -n 1
注意单位,实时盯紧RSS变化。

Linux怎么查看内存占用情况? free命令实时监控内存使用状态

说白了,Linux内存监控就这几招,free、watch、top、htop是核心工具。

先说最重要的free命令,直接用就挺直观,但加个-h参数更省事,比如free -h,自动转MB/GB,去年我们跑那个项目,看到7 G内存只用了2 G,加-h一看才2 .3 G,立马知道单位换算别算错了。
另外一点是free输出的available字段得重点关注,这代表系统认为实际可用的内存,比free更靠谱。
还有个细节挺关键的,buff/cache高不代表内存满,Linux会自动把这部分释放出来,去年我们服务器buff/cache占了一半,但available还有4 G,系统压力不大。

我一开始也以为buff/cache高要清缓存,后来发现不对,Linux优化这块挺聪明的。
等等,还有个事,如果used内存低但available也低,那才真要小心内存满了。

至于watch和动态监控,watch -n2 'free -h'每2 秒刷新一次,特别适合看内存慢慢变化,比如凌晨数据库写日志时内存会慢慢涨。
top和htop更高级,top按M排序进程,htop直接看条形图,安装htop(sudo apt install htop)值得试试,比top直观多了。

提醒个坑:htop默认不显示Swap使用情况,得按S切换,很多人第一次用直接懵了。