如何在没有root权限的情况下获取linux中进程的内存使用情况

时间:2013-06-06 12:51:48

标签: c++ c linux

我在托管服务器上创建一个带有php的站点,所以我没有root权限。我必须获得由GCC编译的进程的最大内存使用量。我搜索了所有可能的解决方案:

  

top, vmstat, ps, proc/$pid$/status, valgrind - 许可被拒绝

     

pmap - 它没有做任何事情

如何在没有root权限的情况下获取进程的内存使用情况?请给我一些想法。谢谢。 :)

1 个答案:

答案 0 :(得分:1)

我不确定你到底在想什么 - 你想知道一个进程当前使用的内存量吗?如果是,请查看/proc/<pid>/status并检查VmRSS行。这就是你想要的数字(在这种情况下,如果你很好奇,RSS意味着“居民集大小”)。该行应该可以在PHP等高级语言中进行解析。但是,对于像C这样的低级语言,应该更容易解析具有相同值的/proc/<pid>/stat,但每个都用空格分隔,并且没有标签。

如果您没有读取文件的权限,则表示服务器进程在不同于您登录的用户下运行。您需要与托管服务提供商合作才能解决问题,或者弄清楚如何让服务器进程查询自己的进程(PHP脚本?)。

这会回答你的问题吗?或者您是否有兴趣知道“最大内存使用率”,“进程在被内核杀死之前可能使用的最大内存量?”对于Linux来说,这实际上是一个棘手的哲学问题。您不会找到有关此类最大值的任何可靠信息,因为没有硬性限制。阅读“Linux内存过量使用”了解更多详情。