我们都知道top
命令会持续监控正在运行的进程。我有一个在嵌入式 Linux 中连续运行的应用程序,我需要通过命令监视其 VSZ(虚拟存储大小)值top
,我的意思是在应用程序运行时,每个时间段都会获取 VSZ 值并记录它(嗯基本上至少首先获得该值)。在这种情况下如何获取 VSZ 值?在 C/C++、bash 或任何其他方法中可能吗?提前致谢。
答案1
有了Linux内核,可以参考/proc/[PID]/stat
(定义在/usr/src/linux/fs/proc/array.c
)。它包含许多字段,第 23 个字段是虚拟内存大小(以字节为单位)(请参阅man proc
)。
或者,您还可以使用/proc/[PID]/statm
仅包含有关内存的值(以页为单位)的值,或者更易于人类阅读的/proc/[PID]/status
.
所有这些信息均在 中详细说明man proc
。
使用cat
命令查看这些文件。
答案2
您ps -eo vsz,comm
可以列出 VSZ 和命令值。然后您可以将其组合到子例程(shell 脚本)中,如下所示:
while true
do
ps -eo vsz,comm | grep process-i-want >> /path/to/output
sleep 1
done
如果您想查看并记录输出,也可以替换>> /path/to/output
为。| tee /path/to/output