[root@localhost ~]# cat top10.sh
#!/bin/bash
memory(){
#1、收集任务管理器进程信息
temp_file=$(mktemp memory.XXX)
top -b -n1 > $temp_file
# -b 显示所有top内容
# -n1 动态显示1次后退出
#2、按进程统计内存使用大小
tail -n +8 $temp_file | awk '{array[$NF]+=$6}END{for (i in array) print array[i],i}'| sort -k 1 -n -r | head -10
rm -f $temp_file
# -n +8 从第八行开始输出内容
# sort -k 表示从第几列排序 -r 倒序 -n 以数字类型排序
}
cpu(){
#1、收集任务管理器进程信息
temp_file=$(mktemp cpu.XXX)
top -b -n1 > $temp_file
#2、按进程统计内存使用大小
tail -n +8 $temp_file | awk '{array[$NF]+=$9}END{for (i in array) print array[i],i}'| sort -k 1 -n -r | head -10
rm -f $temp_file
}
echo '----------memory----------'
memory
echo '----------cpu----------'
cpu