如何在Ubuntu上随时间监控一个进程的内存使用情况

10

我想在Unix系统中观察一个特定进程随时间而增长的内存使用情况(这是一个长时间运行的作业)。

我想我可以执行以下命令:

ps -aux | grep PID

我希望每隔5分钟从cron运行此操作,但这似乎应该有更好的方法。

是否可以使用sar来完成这个任务?


你的问题应该发在 Ubuntu 论坛或者 超级用户论坛。 - Daniel A. White
我在考虑这个问题,但是从开发者的角度来看,这是一个开发问题。我的进程正在泄漏内存,我不是系统管理员...我想我可以尝试去那边问问,但这似乎与两方都有关系... - Joelio
2
这是 https://dev59.com/qHRB5IYBdhLWcg3wpYmo 的副本吗?同时建议使用带有 -p -b -d 选项的 top - Iterator
@Joelio - 有一些工具可以监控泄漏。 - Daniel A. White
1个回答

21

我使用以下内容:

$ ps -o rss $(pgrep executablename)

将它放入一个 while 循环中,或者使用 watch 在一段时间内监视它并与 tail 结合使用。你还可以将其输出到文件并使用 gnuplot 绘制图表,并在每几秒钟刷新一次。


答案不正确。RSS 不是内存使用量。 - poige
1
@poige,您是什么意思??- RSS 进程在实存中占用的内存大小(常驻集大小),以千字节为单位。此数值等于内存中工作段和代码段页面数量之和乘以4。请记住,代码段页面在程序的所有当前运行实例中都是共享的。如果有26个ksh进程正在运行,则ksh可执行程序的任何给定页面的唯一副本只会在内存中存在一个,但“ps”命令将报告该代码段大小作为每个ksh程序实例RSS的一部分。 - Joelio
进程可以部分地被交换(分页),这样它的常驻集大小会减少。 - poige
1
如果 executablename 没有运行,上述代码等同于 ps -o rss。在 PID 列表前使用 -p 似乎更安全,因为它明确要求 PIDS,因此会失败。 - Alois Mahdal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接