如何监控某个进程消耗的内存?

如何监控某个进程消耗的内存?

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

现在我这样做:

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

解释:

  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

答案3

你可以使用top

man top

该程序允许您按 RSS、VSZ、CPU 等对资源使用情况进行排序...它非常有用。

或者,如需更详细的内存使用情况,请尝试“pmap”

man pmap

使用示例:

pmap -x 1234

答案4

尝试一下:

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

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

相关内容