linux - 使用 ps 对进程进行分组

标签 linux macos bash unix ps

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

ps -amcwwwxo “命令 %mem %cpu” | grep -v grep |头-13

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

有什么方法可以将所有同名进程的 mem 和 cpu 使用情况加在一起吗?通过 ps 或通过另一个命令将其管道化。

最佳答案

您可以结合使用 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
)

关于linux - 使用 ps 对进程进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6345778/

相关文章:

cocoa - 如何在界面生成器中创建 cocoa 绑定(bind)?

xcode - CoreAudio AUGraph 没有声音

bash - 有没有一种方法可以使用 bash shell 逐行组合两个文件

linux - C 程序在转换为 Windows 后显示 %zu

c - 使用 fcntl.h close 无法正确关闭文件

macos - 使用 libgit2 连接到私有(private) github 存储库

bash - 从 Unix 命令行查找给定子目录中的文件

linux - bash中的“for option”和bash中的echo

linux - 如何链接到 vim 中的另一个文件?

linux - sed 命令编辑多个文件(插入,替换行)