1.在Linux下安装一个邮件客户端Msmtp软件(类似Foxmail工具)1.下载安装:http://downloads.sourceforge.net...206451&big_mirror=0#tarjxvfmsmtp-1.4.16.tar.bz2#cdmsmtp-1.4.16#./configure--prefix=/usr/local/msmtp#make#makeinstall2,创建msmtp配置文件和日志文件(host为邮件域名,邮箱用户名test,密码123456)#vim~/.msmtprcaccountdefaulthost126.comfromtest@126.comauthloginusertestpassword123456logfile~/.msmtp.log#chmod600~/.msmtprc#touch~/.msmtp.log3,mutt安装配置:(一般在下默认安装linuxmutt)#vim~/.muttrcsetsendmail="/usr/local/msmtp/bin/msmtp"setuse_from=yessetrealname="memory"setfrom=test@126.comsetenvelope_from=yessetrfc2047_parameters=yessetcharset="utf-8"4、邮件发送测试(-s邮件标题,-a表格加附件)#echo"邮件内容123456"|mutt-s"mailtitletestmail"-a/scripts/test.txttest@126.com二、使用free命令监控系统内存1、使用free命令查看linux系统内存使用情况:(在Munits)#free-m(执行结果如下)totalusedfreesharedbufferscachedMem:395234145380168484-/+buffers/cache:27601191Swap:81918681052,查看并拦截剩余空闲内存数值命令:(1)物理内存空闲值:#免费-m|grep内存|awk'{print$4}'(2)缓冲区的空闲值:#free-m|grep-|awk'{print$4}'(3)Swap分区的空闲值:#free-m|grep交换|awk'{print$4}'3.写一个内存监控的脚本文件:#vim/scripts/free-mem.sh#!/bin/bash#使用free命令监控linux系统的内存变化#获取系统当前时间(Writetofilebyappending>>)date>>/scripts/date-time.txt#抓取物理内存空闲值(writetofilebyappend>>)echoMem-free:`free-m|grepMem|awk'{print$4}'`M>>/scripts/mem-free.txt#获取buffer的free值(通过追加>>写入文件)echobuffers/cache-free:`free-m|grep-|awk'{print$4}'`M>>/scripts/buffers-free.txt#抓取Swap分区的free值(将文件写成append>>)echoSwap-free:`free-m|grepSwap|awk'{print$4}'`M>>/scripts/swap-free.txt#逐行连接上面的时间和内存相关的行数据(每次重写文件>)paste/scripts/date-time。txt/scripts/mem-free.txt/scripts/buffers-free.txt/scripts/swap-free.txt>/scripts/freemem.txt#chmoda+x/scripts/free-mem.sh#/scripts/free-内存.sh4。查看内存监控结果文件:#cat/scripts/freemem.txt5。编写免费结果文件邮件发送脚本:#vim/scripts/sendmail-mem.sh#!/bin/bash#生成的freemem.txt文件通过邮件发送给用户#提取本服务器IP的IP地址信息=`ifconfigeth0|grep"inetaddr"|cut-f2-d":"|cut-f1-d""`#提取当前日期时间today=`date-d"0day"+%Yyear%mmonth%dday`#发送内存监控结果邮件echo"这是$IP服务器$today的内存监控报告,请下载附件"|mutt-s"$IP服务器$today内存监控报告"-a/scripts/freemem.txttest@126.com#chmoda+x/scripts/sendmail-mem.sh3.监控系统swap分区Swap,使用率超过80%时发送警告邮件#vim/scripts/swap-warning.sh#!/bin/bash#Extract服务器IP=`ifconfigeth0|grep"inetaddr"|cut-f2-d":"|cut-f1-d""`#系统分配的swap分区总量swap_total=`free-m|grepSwap|awk'{print$2}'`#当前剩余交换分区的空闲大小swap_free=`free-m|grepSwap|awk'{print$4}'`#当前使用的交换分区已用大小swap_used=`free-m|grepSwap|awk'{print$3}'`if((swap_used!=0));then#如果swap分区已经被使用,计算当前剩余swap分区free的百分比,用小数表示,小数点前补一个整数bit0swap_per=0`echo"scale=2;$swap_free/$swap_total"|bc`#设置swap分区的警告值为20%(即使用率超过80%时出现警告)。swap_warn=0.20#比较当前剩余的swap分区百分比和警告值(大于警告值(即剩余的20%)返回1,小于(即剩余的20%)remainingislessthan20%),则返回0)swap_now=`expr$swap_per>$swap_warn`#如果当前swap分区使用率超过80%(即剩余少于20%),以上返回值为等于0),立即发送邮件警告if(($swap_now==0));thenecho"$IP服务器swapexchange分区中只有$swap_freeM未被使用,剩余不足20%,使用率已超过80%,请及时处理。"|mutt-s"$IP服务器内存报警"test@126.comfifi#chmoda+x/scripts/swap-warning.sh4.加入任务计划:内存每十分钟检测一次,如果有报警会立即发送邮件(每十分钟一次),内存检测结果邮件每天早上8:00发送一次#crontab-e*/10****/scripts/free-mem.sh*/10****/scripts/swap-warning.sh08***/scripts/sendmail-mem.sh#servicecrondrestart
