以下是一个将进程按照它们使用的内存量排序的Bash脚本。 如果需要按进程数量排序,只需将排序条件更改为进程数量即可。
#输出所有进程信息 ps -eo pid,ppid,%mem,%cpu,cmd
#按进程数量排序并输出相应信息 ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | awk '{memory[$2]+=$3;cpu[$2]+=$4} END { for (i in memory) { printf("%-20s %6.2f %6.2f\n", i, memory[i],cpu[i]) } }' | sort -k3 -nr
该命令将在终端上输出所有进程的信息,包括进程ID,父进程ID,内存使用情况,CPU使用情况和进程命令。 然后,它将按照内存使用量对这些进程进行排序,并使用awk命令计算相应的CPU时间,并最终按照进程数量进行排序。
要按进程数量排序,只需将--sort=-%mem更改为--sort=-%cpu即可。注意,无论是按照内存使用量还是按照进程数量排序,最后结果都将按照CPU时间进行排序。如果需要,可以在sort命令中更改这个排序条件。