【问题标题】:Group processes with ps使用 ps 对进程进行分组
【发布时间】:2011-09-14 19:17:56
【问题描述】:

我想通过 geektools 在我的桌面上使用 ps 来查看哪些进程正在使用什么。 目前我的命令是:

ps -amcwwwxo "command %mem %cpu" | grep -v grep | head -13

问题在于,当我使用 chrome 时,“Google Chrome He”进程占据了 13 条显示行中的大部分。

有什么方法可以汇总所有同名进程的内存和cpu使用情况?通过 ps 或通过另一个命令传递它。

【问题讨论】:

    标签: linux macos bash unix ps


    【解决方案1】:

    按命令行排序的顶级 cpu 组:

    sudo ps aux | awk '{arr[$11]+=$3}; END {for (i in arr) {print arr[i],i}}' | sort -k1nr | head -n 10
    

    【讨论】:

    • 简单灵巧的脚本
    【解决方案2】:

    找一样的,我发现了这个

    ps aux | awk '{arr[$1]+=$4}; END {for (i in arr) {print i,arr[i]}}' | sort -k2
    

    要打印按 mem 排序、按用户分组的进程(列 1,$1),您可以按其他事物分组,并对其他事物求和,更改 $1 和 $4

    • $1 是第一列:用户名(按此分组)
    • $4 是第四列:%mem(相加)

    我很高兴找到解决方案,只是想分享一下。

    【讨论】:

      【解决方案3】:

      您可以使用awksort 的组合:

      (
      printf "%-20s %-8s %-8s\n" "COMMAND" "%MEM" "%CPU"
      /bin/ps -amcwwwxo "command %mem %cpu" | 
      /usr/bin/awk -F" " '
      BEGIN { 
        idx=0 
        format="%-20s /%-8s/ %-8s\n"
      }
      {
        idx = idx + 1
        col1=$0
        col2=$(NF-1)
        col3=$NF
        sub(/[[:space:]]+[^ ]+[[:space:]]+[^ ]+[[:space:]]*$/,"", col1)
        a[idx]=col1
        b[col1]+=col2
        c[col1]+=col3
      }
      END {
        for(i=2; i<=idx; i++) 
        {
          if (a[i] in b)
          {
            printf format, a[i], b[a[i]], c[a[i]]
            delete b[a[i]]
          }
        }
      }
      ' | 
      /usr/bin/sort -rn -t '/' -k 2,2 | /usr/bin/tr -d '/' | /usr/bin/head -n 15
      )
      

      【讨论】:

      • 在 Ubuntu 16.04 上从 ZSH 执行上述命令时,出现以下错误 error: must set personality to get -x option。解决方案是删除 - 作为 ps 参数。使用/bin/ps amcwwwxo 执行完美!
      【解决方案4】:

      它不存在,您应该编写自己的代码/命令/脚本来执行它。由于所有 Google Chrome Helper 进程都是不同的进程,也许您可​​以编写一个脚本,使用父进程 ID 计算所有 Chrome 进程(帮助程序、插件主机等)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        • 2021-05-19
        • 2021-05-04
        • 1970-01-01
        • 1970-01-01
        • 2013-11-29
        • 1970-01-01
        相关资源
        最近更新 更多