基本上,我需要编写一个 bash 脚本,作为诊断性能问题的便捷工具。该脚本需要首先确定系统上每个唯一的进程所有者,然后对于系统上当前拥有进程的每个用户,它需要:
- 确定该用户拥有的进程数
- 确定该用户拥有的所有进程的内存总和 (SZ)
- 确定该用户拥有的所有进程的当前 CPU 使用率总和 (C)
- 确定该用户拥有的累计时间最长的进程(Hog:进程)的累计时间(TIME)和进程名称(CMD)
我猜第一步是确定系统上所有唯一的进程所有者,然后循环遍历每一个?
答案1
如果你想快速查看流程,请使用top
并阅读手册页以了解如何按各列排序
要查找(大部分)您想要的信息:
ps ax -o user,sz,pcpu |
awk '
NR>1 {n[$1]++; sz[$1]+=$2; cpu[$1]+=$3}
END {
for (user in n)
printf "%-8s %4d %12d %.1f\n", user, n[user], sz[user], cpu[user]
}
'