我在托管服务器上创建一个带有php的站点,所以我没有root权限。我必须获得由GCC编译的进程的最大内存使用量。我搜索了所有可能的解决方案:
top, vmstat, ps, proc/$pid$/status, valgrind
- 许可被拒绝
pmap
- 它没有做任何事情
如何在没有root权限的情况下获取进程的内存使用情况?请给我一些想法。谢谢。 :)
答案 0 :(得分:1)
我不确定你到底在想什么 - 你想知道一个进程当前使用的内存量吗?如果是,请查看/proc/<pid>/status
并检查VmRSS行。这就是你想要的数字(在这种情况下,如果你很好奇,RSS意味着“居民集大小”)。该行应该可以在PHP等高级语言中进行解析。但是,对于像C这样的低级语言,应该更容易解析具有相同值的/proc/<pid>/stat
,但每个都用空格分隔,并且没有标签。
如果您没有读取文件的权限,则表示服务器进程在不同于您登录的用户下运行。您需要与托管服务提供商合作才能解决问题,或者弄清楚如何让服务器进程查询自己的进程(PHP脚本?)。
这会回答你的问题吗?或者您是否有兴趣知道“最大内存使用率”,“进程在被内核杀死之前可能使用的最大内存量?”对于Linux来说,这实际上是一个棘手的哲学问题。您不会找到有关此类最大值的任何可靠信息,因为没有硬性限制。阅读“Linux内存过量使用”了解更多详情。