ITPub博客

首页 > Linux操作系统 > Linux操作系统 > unix linux 下汇总单一用户 cpu mem 使用率 等维护信息

unix linux 下汇总单一用户 cpu mem 使用率 等维护信息

原创 Linux操作系统 作者:spectre2 时间:2012-05-15 17:43:38 0 删除 编辑
最近项目需要做报表,要记录单一用户的cpu和mem使用率,研究了一下awk   

[root@app1 ~]# ps aux |head 
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  10372   664 ?        Ss   Jan18   0:15 init [3]         
root         2  0.0  0.0      0     0 ?        S<   Jan18   1:09 [migration/0]
root         3  0.0  0.0      0     0 ?        SN   Jan18   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S<   Jan18   0:00 [watchdog/0]
root         5  0.0  0.0      0     0 ?        S<   Jan18   0:05 [migration/1]
root         6  0.0  0.0      0     0 ?        SN   Jan18   7:05 [ksoftirqd/1]
root         7  0.0  0.0      0     0 ?        S<   Jan18   0:00 [watchdog/1]
root         8  0.0  0.0      0     0 ?        S<   Jan18   0:04 [migration/2]
root         9  0.0  0.0      0     0 ?        SN   Jan18   1:54 [ksoftirqd/2]
先确定输出列
ps aux |awk '{if ($1 ~ /^nobody$/) {print $1"\t",$2"\t",$3"\t",$4}}'
显示 nobody 用户
[root@app1 ~]# ps aux |awk '{if ($1 ~ /^nobody$/) {print $1"\t",$2"\t",$3"\t",$4}}'
nobody   14625   0.0     0.0
nobody   14626   0.6     0.0
nobody   14627   0.6     0.0
nobody   14881   0.6     0.0
依次代表: USER PID   %CPU     %MEM  对应$1,$2,$3,$4
然后研究汇总处理,awk忘得差不多了,临时找资料简单研究了一下,做了个能实现功能的简陋品:
ps aux |awk '{if ($1 ~ /^nobody$/) {print $1"\t",$2"\t",$3"\t",$4}}'|awk '{if(!ind[i]){ind[i++]=n;}}{sumi[n]+=$3;}{ if(!lnd[l]){lnd[l++]=m;}}{suml[m]+=$4;}END{for(j=0;j|head -1
中间居然用了3个管道符,2次awk还有个head~真难看~
结果如下:
nobody用户:
[root@app1 ~]# ps aux |awk '{if ($1 ~ /^nobody$/) {print $1"\t",$2"\t",$3"\t",$4}}'|awk '{if(!ind[i]){ind[i++]=n;}}{sumi[n]+=$3;}{ if(!lnd[l]){lnd[l++]=m;}}{suml[m]+=$4;}END{for(j=0;j
nobody   1.8     0
依次代表: USER      %CPU     %MEM  
root用户:
[root@app1 ~]# ps aux |awk '{if ($1 ~ /^root$/) {print $1"\t",$2"\t",$3"\t",$4}}'|awk '{if(!ind[i]){ind[i++]=n;}}{sumi[n]+=$3;}{ if(!lnd[l]){lnd[l++]=m;}}{suml[m]+=$4;}END{for(j=0;j
root     54.9    10.8
依次代表: USER      %CPU     %MEM  
代码虽然臃肿难看,效果还是达到了,项目时间太急,BOSS答应甲方答应的很痛快,我们就得悲催了。。。。
过来这阵再回来优化一下代码吧~有路过的朋友来一起讨论一下吧~谢谢~

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14184018/viewspace-729860/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论