如何显示在给定范围内使用内存的进程

时间:2018-04-25 19:39:35

标签: linux bash terminal command

如何显示在终端中给定间隔之间使用内存的进程?例如:使用50到100 MB内存的进程。

我试过了:

ps aux | awk '{print $4}' | sort

但这仅显示每个已排序但不在间隔内的进程的内存。

2 个答案:

答案 0 :(得分:1)

这将按预期列出流程。请记住,ps显示以千字节为单位的内存大小。

ps -u 1000 -o pid,user,stime,rss \
  | awk '{if($4 > 50000 && $4 < 100000){ print $0 }}' \
  | sort -n -k 4,4

命令输出:

 3407 luis.mu+ 10:30 51824
 3523 luis.mu+ 10:30 66108
 3410 luis.mu+ 10:30 71060
 3595 luis.mu+ 10:30 74340
 3609 luis.mu+ 10:30 77772
18550 luis.mu+ 16:47 93616

在这种情况下,它只显示用户ID 1000的4个字段。要显示所有进程,请使用

ps -e -o pid,user,stime,rss

来自ps(3)下的STANDARD FORMAT SPECIFIERS手册页:

  

RSS
  驻留集大小,任务使用的非交换物理内存(inkiloBytes)

如果要显示更多字段,请查看手册页并将字段添加到-o选项。

答案 1 :(得分:0)

对于更复杂的测试,包括比较,不等式和数值测试,awk非常有用:

ps aux | awk '{print $4}' | sort | awk '$1 >= 1 && $1 <=2'| cat

在这里,我使用awk检查1MB到2MB之间的内存使用情况,然后使用cat进行打印。