我想获取 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 进程的大小。
使用ps
Linux 上 procps 的实用程序,如果您替换-p "$pid"
为,您将获得所有名称相同-C proxyfarm
的进程的信息。proxyfarm
POSIX 等效项,假设进程名称不包含空格或换行符:
ps -Ao vsz= -o comm= | awk '$2 == "proxfarm" {print $1}'
您可以替换comm
为args
来搜索参数列表以单词proxfarm
而不是进程名称开头的进程。