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-05 20:04:20 发表到 Linux 中,目前已经被浏览 4227 次,评论 0 次;

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

系统负载监控

本日志由 flyinweb 于 2009-07-05 17:04:09 发表到 Linux 中,目前已经被浏览 3912 次,评论 0 次;

作者添加了以下标签: shell系统负载监控

首页只显示了部分日志内容,要查看日志的全部内容请阅读全文

方法一:配置SSH工具
SecureCRT中文版配置
[全局选项]→[默认会话]→[编辑默认设置]→[终端]→[外观]→[字体]→[新宋体 10pt CHINESE_GB2312]→[字符编码 UTF-8]

putty配置
[window]→[Appearance]→[Font settings]→[Change]→[Fixedsys CHINESE_GB2312]
[window]→[Appearance]→[Translation]→[Received data assumed to be in which character set]→[Use font encoding UTF-8]
如果经常使用,把这些设置保存在session里面。
打开putty,登录成功后,在shell中输入:export LC_ALL='zh_CN.utf8'

方法二:配置系统

console终端乱码
  在/etc/profile(或~/.bash_profile)文件的最后一行添加如下内容:

  1. export LC_ALL="zh_CN.GB18030" 


xwindow终端乱码
  在/etc/sysconfig/i18n文件的最后一行添加如下内容:  

  1. export LC_ALL="zh_CN.GB18030" 

vi /etc/sysconfig/i18n
  将内容改为

  1.   LANG="zh_CN.GB18030"  
  2.   LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"  
  3.   SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"  
  4.   SYSFONT="lat0-sun16" 


  之后重启机器,这样中文在SSH,telnet终端就可以正常显示了。

操作系统语言是英文,显示中文字符
编辑/etc/sysconfig/i18n,修改为如下内容:

  1. LANG="en_US"  
  2. SUPPORTED="en_US.UTF-8:en_US:en"  
  3. SYSFONT="latarcyrheb-sun16"  

本日志由 flyinweb 于 2009-07-05 09:11:38 发表到 Linux 中,目前已经被浏览 4407 次,评论 0 次;

作者添加了以下标签: linux终端乱码