如何监视进程消耗的内存?


16

我有一个过程,我想看看它在运行时会消耗多少内存。

现在,我这样做:

ps faux | grep casper

但这只是给我那一刻的信息。很高兴看到该值随着脚本的进行而变化。

有什么办法可以做到吗?

Answers:


15

方法1

跑:

top

检查程序的PID(第一列),然后运行:

top -p PID

方法2

将其粘贴到终端中或将其另存为mem_usage.sh并从终端运行。

#! /bin/bash
while :
do
    clear
    ps faux | grep casper
    sleep 1s
done

1
如何从显示%更改它?出于兴趣:-)
Wilf

运行脚本时得到以下信息:bash:./memory_usage.sh:bin / bash:错误的解释器:无此类文件或目录
Hommer Smith 2013年

呸! 我已经编辑了!发布前应该已经对其进行了正确的检查。第一行应该说明从/ bin / bash运行它的位置(我有bin / bash,所以它在名为bin的文件夹中本地检查bash)
朱利安·斯特林

1
@ wilf ps faux | grep casper | awk'{print $ 11} {print $ 6}'这应该在一行上给您程序名称,下一行是实际的内存大小,以kB为单位。
朱利安·斯特林

7

要仅监视您的进程,可以检查/ proc / PID / status或/ proc / PID / statm。

关于/ proc / PID / statm:

完成后,cat /proc/PID/statm您应该会看到以下内容:

611450 185001 883 18 0 593431 0

说明:

  1. 大小:-程序总大小(611450 X 4096/1024 = 2445800kB = 2388M)
  2. 常驻:-常驻集大小(185001 X 4096/1024 = 740004kB = 722M)
  3. 共享:-共享页面(883 X 4096 = 3532)
  4. trs:-文本(代码)(18 X 4096/1024 = 72kB = VmExe)
  5. drs:-数据/堆栈
  6. lrs:-库(593431 X 4096/1024 = 2373724kB = VmData + VmStk)
  7. dt:-脏页

您也可以使用date和cat记录循环执行过程的内存活动。


4

你可以使用'top'

man top

该程序使您可以通过RSS,VSZ,CPU等对资源使用情况进行排序。它非常有用。

另外,有关内存使用情况的更详细细分,请尝试使用“ pmap”

man pmap

用法示例:

pmap -x 1234

干杯

sc。


1
使用pmap -x PID,您的意思是否是令人难以置信的详细用法:-)
Wilf 2013年

确实-永远不可能有足够的细节:)
swisscheese 2013年

1
在我的(Ubuntu 16.04.5 LTS)上,带有PID的“ pmap -x”除了PID和命令外均未显示。-X相同。
orrd


1

尝试:

watch 'ps faux | grep -v grep | grep casper'

您也可以使用--interval <seconds>参数更改刷新间隔。


1
如果将最后一个更改为grep [c] asper,则不需要-v grep。匹配卡斯珀,但本身不匹配。
武当
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.