【发布时间】:2015-08-17 16:58:47
【问题描述】:
我希望能够使用 '/bin/ps -C httpd u'(或任何进程)的输出并使用 awk 将所有 %MEM 一起添加到变量中。
示例输出为:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 9636 0.0 1.4 509264 14456 ? Ss 17:34 0:00 /usr/sbin/httpd -DFOREGROUND
apache 9639 1.6 7.0 679916 71236 ? S 17:34 1:13 /usr/sbin/httpd -DFOREGROUND
apache 9641 1.6 7.0 680312 71456 ? S 17:34 1:14 /usr/sbin/httpd -DFOREGROUND
apache 9644 1.5 7.0 680320 71356 ? S 17:34 1:12 /usr/sbin/httpd -DFOREGROUND
apache 9645 1.5 7.0 679904 71464 ? S 17:34 1:08 /usr/sbin/httpd -DFOREGROUND
apache 9646 1.7 7.0 680156 71448 ? S 17:34 1:18 /usr/sbin/httpd -DFOREGROUND
apache 9653 1.6 6.9 679640 70572 ? S 17:34 1:12 /usr/sbin/httpd -DFOREGROUND
apache 9660 1.4 7.0 679972 71240 ? S 17:34 1:07 /usr/sbin/httpd -DFOREGROUND
apache 11248 1.6 7.1 680020 72308 ? S 17:39 1:10 /usr/sbin/httpd -DFOREGROUND
我一直在使用另一个命令来实现类似的东西来获取所有内核的平均 CPU 使用率,所以我认为对 ps 做类似的东西一定是可能的。
CpuUtil=`LANG=en_GB.UTF-8 mpstat 1 1 |
awk '$2 ~ /CPU/ { for(i=1;i<=NF;i++) { if ($i ~ /%idle/) field=i } } $2 ~ /all/ { print 100 - $field}' |
tail -1`
以上输出所有cpu的平均CPU百分比。
所以我的目标是有一个变量输出用于作为参数传递的进程的所有实例的总内存百分比。
TotalProcMemUsage=`/bin/ps -C httpd u | awk .... `
在 awk 之后我有点迷茫,我应该学习,但我现在没有时间。
【问题讨论】: