加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

使用awk从’ps aux’输出获取内存使用情况

发布时间:2020-12-14 01:29:09 所属栏目:Linux 来源:网络整理
导读:我必须使用awk解决练习.基本上我需要从’ps aux’命令检索每个用户的内存使用总量和格式,如下所示: User Total%Memuser1 3.4%user2 1.5% 等等. 我似乎无法解决的问题是:我如何知道有多少用户登录?我怎样才能为每一个做出不同的总和呢? 谢谢 :) 解决方法
我必须使用awk解决练习.基本上我需要从’ps aux’命令检索每个用户的内存使用总量和格式,如下所示:

User    Total%Mem
user1      3.4%
user2      1.5%

等等.

我似乎无法解决的问题是:我如何知道有多少用户登录?我怎样才能为每一个做出不同的总和呢?

谢谢 :)

解决方法

你不需要知道任何这些.您需要知道的是:

>您具有每行中具有相同列数的列式输出.
>第一列是用户登录名.
>第4列是%MEM列.
> Awk自动将变量初始化为0.
> awk索引键是任意值:)

ps aux | awk 'NR != 1 {x[$1] += $4} END{ for(z in x) {print z,x[z]"%"}}'

我将输入传递给awk,然后我告诉它跳过第1行(NR!= 1).然后对于每一行,它用英语读取如下:

in array ‘x’,increment the value in
‘x[username]’ by the value in the 4th
column. If the array key doesn’t exist
yet,create it,initialized at 0,and
then increment that by the value in
the 4th column.

当Awk为每一行完成此操作时,它会运行“END”块中的代码,该块表示打印出每个用户名(x中的z),以及与该用户关联的最终聚合值(x [z]),后跟一个“%”.

如果要逐行查看它,可以使用相同的基本规则,但在处理每一行后而不是在“END”中添加打印:

ps aux | awk 'NR != 1 {x[$1] += $4; print $1,x[$1]}'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读