为了方便自己查看CentOS上的各用户cpu和内存的使用比例,写了shell脚本。
viewUsage.sh
#!/bin/bash # # view the cpu and memory consumption of each user at the current time. # chenqy 20101126 v0.9 # chenqy 20110115 v1.0 : # added the sort option: --reverse --mem --cpu function viewconsumption { ps aux | grep -v 'PID' | sed 's/[ ][ ][ ]*/ /g' | cut -d " " -f1-4 | sort | awk ' BEGIN{ userid = "None" cpuUsage = 0 memUsage = 0 } { if(userid == $1) { cpuUsage += $3 memUsage += $4 } else { if (userid != "None") { printf("%s %4.1f %4.1f/n", userid, cpuUsage, memUsage) } userid = $1 cpuUsage = $3 memUsage = $4 } }' } function printResult { awk ' BEGIN { postcolor = "/033[0;39m" } { userid = $1 cpuUsage = $2 memUsage = $3 if(cpuUsage >= 10 || memUsage >= 10) { # red color precolor = "/033[0;31m" } printf("%s%s /033[12G%4.1f /033[20G%4.1f%s/n", precolor, userid, cpuUsage, memUsage, postcolor) precolor = "/033[0;39m" }' } echo -e "USER /033[12G%CPU /033[20G%MEM" echo "--------- ------ -----" if [ "$1" == "--mem" ];then key="-k 3 -n" elif [ "$1" == "--cpu" ];then key="-k 2 -n" fi if [ "$1" == "--reverse" -o "$2" == "--reverse" ];then reverse="-r" fi viewconsumption|sed 's/[ ][ ][ ]*/ /g'|sort $key $reverse|printResult
使用说明:
#以下输出均为“aix.unix-center.net”上的运行结果
1. 不使用参数,直接调用,默认排序为按user名升序,cpu或mem的使用率超过10%时以红色字体显示:
#提示:大写字母开头会排在小写字母开头前面