如何显示在终端中给定间隔之间使用内存的进程?例如:使用50到100 MB内存的进程。
我试过了:
ps aux | awk '{print $4}' | sort
但这仅显示每个已排序但不在间隔内的进程的内存。
答案 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
进行打印。