检索单个进程的虚拟内存大小 (VSZ) 值

检索单个进程的虚拟内存大小 (VSZ) 值

我想获取 Linux 服务器上运行的特定进程的 VSZ 值

以下命令:

ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'   

正在将所有进程内存的高使用率调低。

如何仅获取单个进程的 (VSZ) 值。

比方说,我想获取“proxyfarm”的 VSZ 值。如何使用以下命令实现此目的:

ps ux | grep httpd | grep proxyfarm    can fetch proxyfarm complete details.But, i need only VSZ of it.

答案1

检查下的虚拟内存大小 (vsz) 值/proc/<PID>/stats

根据/proc 人,第 23 列/proc/<PID>/stats代表 vsz 值字节

例如PID为3917则:

cat /proc/3917/stat | cut -d" " -f23

需要注意的是,下面报告的 vsz 值/proc/PID/stats是估计的字节,而命令的输出ps -o vsz= -p "$pid"估计为千比字节或基布(1 KiB 等于 1024 字节)。

为了将 vsz 的输出转换/proc/PID/stat字节基布:

cat /proc/3917/stat | cut -d" " -f23 | xargs -n 1 bash -c 'echo $(($1/1024))' args

答案2

POSIXly,

ps -o vsz= -p "$pid"

$pid将以1024 字节为单位以十进制整数形式打印(虚拟)内存中id 进程的大小。

使用psLinux 上 procps 的实用程序,如果您替换-p "$pid"为,您将获得所有名称相同-C proxyfarm的进程的信息。proxyfarm

POSIX 等效项,假设进程名称不包含空格或换行符:

ps -Ao vsz= -o comm= | awk '$2 == "proxfarm" {print $1}'

您可以替换commargs来搜索参数列表以单词proxfarm而不是进程名称开头的进程。

相关内容