命令top:实时更新,且只打印部分进程,打印全部需参数处理即-b == top -b -n 1ps:静态数据,全部进程数据都显示出来 == ps
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
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_39651356/article/details/123000597
内容来源于网络,如有侵权,请联系作者删除!