我有一个进程,我想查看它在运行时消耗了多少内存。
现在我这样做:
ps faux | grep casper
但这只是给了我当时的信息。如果能看到这个值随着脚本的进行而变化就好了。
有什么方法可以做到这一点?
答案1
方法 1
跑步:
top
检查程序的 PID(第一列),然后运行:
top -p PID
方法 2
将其粘贴到终端或将其保存为 mem_usage.sh 并从终端运行它。
#! /bin/bash
while :
do
clear
ps faux | grep casper
sleep 1s
done
答案2
若要仅监控您的进程,您可以检查/proc/PID/status or /proc/PID/statm
。
关于/proc/PID/statm
:
完成后cat /proc/PID/statm
你应该看到这个:
611450 185001 883 18 0 593431 0
解释:
- 大小:- 程序总大小(611450 X 4096/1024 = 2445800kB = 2388M)
- 常驻:- 常驻集大小(185001 X 4096/1024 = 740004kB = 722M)
- 分享:- 共享页面 (883 X 4096 = 3532)
- trs:-文本(代码)(18 X 4096/1024 = 72kB = VmExe)
- drs:-数据/堆栈
- lrs:-库(593431 X 4096/1024 = 2373724kB = VmData + VmStk)
- dt :- 脏页
date
您还可以使用和执行循环来记录进程的内存活动cat
。
答案3
你可以使用top
man top
该程序允许您按 RSS、VSZ、CPU 等对资源使用情况进行排序...它非常有用。
或者,如需更详细的内存使用情况,请尝试“pmap”
man pmap
使用示例:
pmap -x 1234
答案4
尝试一下:
watch 'ps faux | grep -v grep | grep casper'
您也可以使用--interval <seconds>
参数更改刷新间隔。