gpt4 book ai didi

awk - 使用 awk 从 'ps aux' 输出中获取内存使用情况

转载 作者:行者123 更新时间:2023-12-03 21:41:38 25 4
gpt4 key购买 nike

我必须使用 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]}'

    关于awk - 使用 awk 从 'ps aux' 输出中获取内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2656466/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com