為了方便自己查看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%時以紅色字體顯示:
#提示:大寫字母開頭會排在小寫字母開頭前面
- tsingyee@aix bin# ./viewUsage.sh
- USER %CPU %MEM
- --------- ------ -----
- Michelle 48.2 0.0 <=這條記錄為紅色字體(cpu或mem的使用率超過10%)
- bookses 0.0 0.0
- centos1 0.0 0.0
- coolryx 0.0 0.0
- daemon 0.0 0.0
- dddfr 0.0 0.0
- erryqj 0.0 0.0
- firstdre 0.0 0.0
- freebsdj 0.0 0.0
- freshman 0.0 0.0
- geepz 0.0 0.0
- hanshanz 0.0 0.0
- he_pdz 0.0 0.0
- huangxue 0.0 0.0
- idlanhy 0.0 0.0
- jerry168 0.0 0.0
- junjieai 0.0 0.0
- junonly 0.0 0.0
- lichd 0.0 0.0
- lqjboy 0.0 0.0
- markcool 0.0 0.0
- mxdu 0.0 0.0
- nanman 0.0 0.0
- philippe 0.0 0.0
- piaoye06 0.0 0.0
- root 14.1 2.0 <=這條記錄為紅色字體(cpu或mem的使用率超過10%)
- spectre 0.0 0.0
- thorqq 0.0 0.0
- tsingyee 0.0 0.0
- uingei 0.0 0.0
- zhangdon 0.0 0.0
- zhangwb8 0.0 0.0
- zte_zxr1 0.0 0.0
- tsingyee@aix bin#