mcsrainbow

Never Lose Enthusiasm And Courage.

用户操作
[即时聊天] [发私信] [加为好友]
冰火幻城ID:mcsrainbow
33563次访问,排名3504(-1)好友21人,关注者30
企业、技术、生活
mcsrainbow的文章
原创 79 篇
翻译 1 篇
转载 25 篇
评论 41 篇
冰火幻城的公告
我的常用电子邮箱
我的MSN帐号
我的QQ帐号
我的Skype帐号
最近评论
sj:学习了
louie:我也想要一个比较急,非常感谢!!!



邮箱:26765589@qq.com
!:偶没下下来 .................有的话麻烦给发个peshu521@163.com
!:dgdsfgdf
05202:谢谢楼主了 找的好辛苦啊
已经下了 可以的
文章分类
收藏
    相册
    VirtualCorporation
    成都四方信息技术有限公司
    四川龙图共展科技有限公司
    宜锐科技(成都)有限公司
    朋友
    eysunglow's Blog
    Firn's Blog
    h0tr0ck's Blog
    Lily's Blog
    qintel's Blog
    rainballdh's Blog
    其他
    Free Web Proxy
    Google Earth观察
    Jerry 的HR博客
    回忆未来[张宴]
    天涯虚拟社区
    疯狂的设计
    福林雨[唐福林]
    麦田的读书生活
    英语
    Dict.cn 海词[在线词典]
    全国IT职业英语水平考试
    英语学习网[英语周报]
    专业
    ChinaUnix.net
    Debian官方网站
    LinuxSir.Org
    Python中文社区
    Python官方网站
    Ubuntu中文Wiki
    中国Linux论坛
    中国教育Unix Linux资源
    啄木鸟Pythonic开源社区
    鸟哥的Linux私房菜
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 原创SHELL脚本共享:系统实时监控程序(基于TOP指令优化)收藏

    新一篇: 如何提高你的工作效率?  | 旧一篇: 创造与卓越

    TOP相当于Linux下的资源管理器,我们公司有一部分重要的服务器便是通过该命令直接实时监控的。
    但是,TOP虽然十分强大,对我们监控却并不是很适合,不能很直观的立刻锁定到重点的数据。更不能利用程序自动完成一些判断了。
    因此,我花了一个晚上的时间,完成了下面的这个脚本,只要安装的TOP命令的Linux主机都可以正常使用该脚本!
    它目前还是很初级的版本,所以很简单,甚至很弱,但它也实现了以下一些功能:
    1.更亲和的人机界面,将重要的数据如CPU,负载,内存百分比等直接输出到平面上;
    2.实现了对前一秒的流量统计;
    3.更自由的用户自定义选项,可以通过变量来和直接修改脚本来调整排盘和自己的偏好;
    4.自动判断功能,当某一项数值出现异常时(依赖于你的预设值),将会现在在顶部有警告信息。
    我将会把这一脚本更加的完善,并完成另一份不依赖于TOP指令的脚本(它主要通过常用命令和/proc文件中获取)。
    大家任何有需要的可以直接粘贴过去使用,另外,有任何完善的建议的请直接向我提出来,谢谢。

    #!/bin/bash
    ####################################
    ## System information listen tool v0.2 ######
    ##                   powered by mcsrainbow ######
    ####################################
    while true
    do
     
    ###Copy the top's content to top.info###
    top -b1 -n1 >top.info
    sleep 2
     
    ###Check the flow###
    typeset in in_old dif_in
    typeset out out_old dif_out
     
    FLOW(){
    in_flow1=$(cat /proc/net/dev | grep eth0 | sed -e "s/(.*):(.*)/[1]/g" | awk ' { print $1 }')
    in_flow2=$(cat /proc/net/dev | grep eth1 | sed -e "s/(.*):(.*)/[1]/g" | awk ' { print $1 }')
    in_flow_byte=$(expr $in_flow1 + $in_flow2)
    in_flow=$(expr $in_flow_byte / 1024)
    out_flow1=$(cat /proc/net/dev | grep eth0 | sed -e "s/(.*):(.*)/[1]/g" | awk ' { print $9 }')
    out_flow2=$(cat /proc/net/dev | grep eth1 | sed -e "s/(.*):(.*)/[1]/g" | awk ' { print $9 }')
    out_flow_byte=$(expr $out_flow1 + $out_flow2)
    out_flow=$(expr $out_flow_byte / 1024)
    }
     
    FLOW
    in_old=$in_flow
    out_old=$out_flow
     
    sleep 1
     
    FLOW
    in=$in_flow
    out=$out_flow
    dif_in=$(expr $in - $in_old )
    dif_out=$(expr $out - $out_old )
     
    ###Clear the Screen###
    clear
     
    ###Define the safe number###
    servername=Server   #The server's name which you running the scripts
    maxload=5                  #Warning if the load average bigger than this number
    maxcpu=50                 #Warning if the cpu bigger than is percent
    minmem=120             #Warning if the memory less than this number (MB)
    minswap=120            #Warning if the swap less than this number (MB)
    maxusers=3               #Warning if the user online more than 3
    maxzombie=2            #Warning if the zombie process more than 2
     
    ###Check the CPU###
    cpuinfo=`grep "Cpu(s)" top.info|awk '{print $2}'`
    cpuinfonumber=` echo $cpuinfo |awk -F "%" '{print $1}'|awk -F "." '{print $1}'`
    if [ ${maxcpu} -lt ${cpuinfonumber} ]
            then
            echo "!!!!WARNING:The CPU used too much!!!!"
    fi
     
    ###Check the Mem###
    meminfo=`grep "Mem:" top.info|awk '{print $4 "/" $2}'`
    usedmem_kb=`grep "Mem:" top.info|awk '{print $4}'|awk -F "k" '{print $1}'`
    usedmem_mb=$(expr $usedmem_kb / 1024)
    totalmem_kb=`grep "Mem:" top.info|awk '{print $2}'|awk -F "k" '{print $1}'`
    totalmem_mb=$(expr $totalmem_kb / 1024)
    freemem_mb=$(expr $totalmem_mb - $usedmem_mb)
    if [ ${freemem_mb} -lt ${minmem} ]
            then
            echo "!!!!WARNING:The Memory used too much!!!!"
    fi
    totalmem_kb_percent=$(expr $totalmem_kb / 100)
    percentmem=$(expr $usedmem_kb / $totalmem_kb_percent)
     
    ###Check the Swap###
    swapinfo=`grep "Swap:" top.info |awk '{print $4 "/" $2}'`
    usedswap_kb=`grep "Swap:" top.info |awk '{print $4}'|awk -F "k" '{print $1}'`
    usedswap_mb=$(expr $usedswap_kb / 1024)
    totalswap_kb=`grep "Swap:" top.info |awk '{print $2}'|awk -F "k" '{print $1}'`
    totalswap_mb=$(expr $totalswap_kb / 1024)
    freeswap_mb=$(expr $totalswap_mb - $usedswap_mb)
    if [ ${freeswap_mb} -lt ${minswap} ]
            then
            echo "!!!!WARNING:The Swap used too much!!!!"
    fi
    totalswap_kb_percent=$(expr $totalswap_kb / 100)
    percentswap=$(expr $usedswap_kb / $totalswap_kb_percent)
     
    ###Check the users online###
    useronl=`grep "load average:" top.info |sed 's/user.*//'|awk '{print $(NF)}'`
    if [ ${maxusers} -lt ${useronl} ]
            then
            echo "!!!!WARNING:The User online is more than 3!!!!"
    fi
     
    ###Check the load average###
    loadavg=`grep "load average:" top.info |sed 's/.*load average: //'|awk -F "," '{print $(NF-2)}'`
    loadavgnumber=`grep "load average:" top.info |sed 's/.*load average: //'|awk -F "," '{print $(NF-2)}'|awk -F "." '{print $1}'`
    if [ ${maxload} -lt ${loadavgnumber} ]
            then
            echo "!!!!WARNING:The Load Average is more than 5!!!!"
    fi
     
    ###Check the zombie###
    zombie=`grep "Tasks:" top.info |awk '{print $(NF-1)}'`
    if [ ${maxzombie} -lt ${zombie} ]
            then
            echo "!!!!WARNING:The Zombie Process is more than 2!!!!"
    fi
     
    ###Check the most process###
    processtitle=`grep "TIME+" top.info`
    processinfo=`sed -n 8p top.info`
     
    ###Show me the number just have counted###
    echo "Server     CPU   LOAD ZOMBIE   USER   IN     OUT             MEM             SWAP    "
    echo "${servername} ${cpuinfo} ${loadavg}    ${zombie}        ${useronl}   ${dif_in}KB/s ${dif_out}KB/s   ${meminfo} ${percentmem}%   ${swapinfo} ${percentswap}% "
    echo "--------------------------------------------------------------------"
    echo "${processtitle}"
    echo "${processinfo}"
     
    done

    发表于 @ 2007年11月28日 08:17:00|评论(loading...)|收藏

    新一篇: 如何提高你的工作效率?  | 旧一篇: 创造与卓越

    评论

    #sj 发表于2008-07-02 14:31:20  IP: 125.33.157.*
    学习了
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 冰火幻城