1. #!/bin/bash    
  2. #  
  3. # 监控内存使用状态 以便做出响应,可以添加到/etc/rc.local中作为守护进程脚本运行    
  4. #  
  5. # free#              total       used       free     shared    buffers     cached  
  6. # Mem:       2074716     702972    1371744          0     123612     478028  
  7. # -/+ buffers/cache:     101332    1973384  
  8. # Swap:      4088532          0    4088532   
  9. #  
  10. MINRATIO="0.05" 
  11. #while true  
  12. while :  
  13. do  
  14.     MemTotal=`free|grep "Mem"|awk '{ print $2 }'`  
  15.     MemFree=`free|grep "Mem"|awk '{ print $4 }'`  
  16.     Result=`echo | awk '{ print "'$MemFree'" / "'$MemTotal'" }'`  
  17.     RetVal=`awk 'BEGIN { print ("'$Result'" < "'$MINRATIO'"); }'`  
  18.  
  19.     if [ ${RetVal} -eq 1 ]; then  
  20.     #    echo "Restart Apache"  
  21.         /usr/local/apache/bin/apachectl restart  
  22.     fi  
  23.     sleep 60  
  24. done 

注意:awk中变量的使用
一:"'$var'"
这种写法大家无需改变用'括起awk程序的习惯,是老外常用的写法.如:

  1. var="test"  
  2. awk 'BEGIN{print "'$var'"}' 

这种写法其实际是双括号变为单括号的常量,传递给了awk.
如果var中含空格,为了shell不把空格作为分格符,便应该如下使用:

  1. var="this is a test"  
  2. awk 'BEGIN{print "'"$var"'"}' 


二:'"$var"'
这种写法与上一种类似.如果变量含空格,则变为'""$var""'较为可靠.
三.把括起awk程序的''变为"",使用"$var"
如:

  1. $var="this is a test"  
  2. awk 'BEGIN{print "$var"}"  


这是因为在""里$是特殊字符,而在''里$是普通字符.
四:export 变量,使用ENVIRON["var"]形式,
如:

  1. $var="this is a test";export $var  
  2. awk 'BEGIN{print ENVIRON["var"]}'  


五:当然也可以使用-v选项
如:

  1. $var="this is a test" 
  2. awk -vnvar="$var" '{print nvar}' 


这样便把系统变量定义成了awk变量.

此文章由 flyinweb 于 2009-07-06 14:09:40 编辑

本日志由 flyinweb 于 2009-07-05 20:04:20 发表,目前已经被浏览 4236 次,评论 0 次;

作者添加了以下标签: LINUX内存监控

引用通告:http://www.517sou.net/Article/129/Trackback.ashx

评论订阅:http://www.517sou.net/Article/129/Feeds.ashx

评论列表

    暂时没有评论
(必填)
(必填,不会被公开)