memoryOrCpuTop10.sh
#!/bin/bash
if [ ! $1 ];then
echo "Usage: sh $0 [memory|cpu]"
exit 1
fi
tempFile=$(mktemp memoryOrCpuTop10.temp.XXX)
# 将进程信息放入临时文件中
top -b -n 1 > $tempFile
case $1 in
memory)
echo "占用内存最多的前10个进程"
echo 'Memory Memory% PID COMMAND'
# sort中的 -k 1表示 以每行第一个单词进行排序,-r倒序排序 -n每行第一个单词是数字形式
tail -n +8 $tempFile | awk '{processInfo[$10" "$1" "$NF]+=$6}END{for (processPIDandName in processInfo) print processInfo[processPIDandName], processPIDandName}' | sort -k 1 -nr | head -10 | awk '{print int($1/1024)"MB "$2" "$3" "$4}'
;;
cpu)
echo "占用CPU最多的前10个进程"
echo 'CPURate PID COMMAND'
# sort中的 -k 1表示 以每行第一个单词进行排序,-r倒序排序 -n每行第一个单词是数字形式
tail -n +8 $tempFile | awk '{processInfo[$1" "$NF]+=$9}END{for (processPIDandName in processInfo) print processInfo[processPIDandName], processPIDandName}' | sort -k 1 -nr | head -10
;;
*)
;;
esac
rm -rf $tempFile