如何在终端显示内存占用处于指定区间的进程?
筛选指定内存区间的进程
我明白你现在的需求——要找出内存占用在50-100MB之间的进程,而不是只看所有进程的内存排序结果。你之前的命令只提取了内存百分比并排序,但缺少筛选逻辑,咱们来调整一下:
直接筛选并显示完整进程信息
用这个命令可以直接列出符合条件的进程(以实际物理内存RSS为准,转成MB计算):
ps aux | awk '{mem = $6 / 1024; if (mem >= 50 && mem <= 100) print $0}'
命令拆解:
ps aux:输出系统中所有进程的完整信息,其中第6列RSS是进程实际占用的物理内存,单位是KBawk部分:mem = $6 / 1024:把RSS的KB值转换为MB,方便和你要的50-100MB区间对比if (mem >= 50 && mem <= 100):判断内存是否落在目标区间内print $0:打印符合条件的整行进程信息,这样你能看到PID、命令名等完整内容
进阶:按内存大小排序显示
如果想让结果按内存占用从低到高排序,可以加上排序逻辑:
ps aux | awk '{mem = $6 / 1024; if (mem >= 50 && mem <= 100) print mem, $0}' | sort -n
这里先把内存值放在每行开头,再用sort -n做数值排序,最后输出的结果会按内存从小到大排列。
补充说明:关于%MEM和实际内存的区别
你之前用的$4是%MEM列(内存占用百分比),如果想用百分比筛选,需要结合你的总内存计算对应的百分比区间,但这种方式不通用(换机器总内存变了就失效)。所以更推荐用RSS转MB的方式,直接匹配你要的绝对内存区间。
内容的提问来源于stack exchange,提问作者Ax M
相关产品推荐
相关产品推荐

