shell脚本监控系统负载、CPU和内存使用情况

2019-09-23 09:32:22王冬梅

-/+ buffers/cache:       2760       1191
Swap:         8191         86       8105

2、查看截取剩余内存free的数值命令:

(1) 物理内存free值: # free -m | grep Mem | awk '{print $4}'
(2) 缓冲区的free值: # free -m | grep - | awk '{print $4}'
(3) Swap分区free值: # free -m | grep Swap | awk '{print $4}'

3、编写内存监控的脚本文件:

# vim /scripts/free-mem.sh
#!/bin/bash 
#使用free命令监控linux系统内存变化 
 
#取系统当前时间(以追加的方式写入文件>>) 
date >> /scripts/date-time.txt    
 
#抓取物理内存free值(以追加的方式写入文件>>) 
echo Mem-free: `free -m | grep Mem | awk '{print $4}'`M >> /scripts/mem-free.txt  
 
#抓取缓冲区的free值(以追加的方式写入文件>>) 
echo buffers/cache-free: `free -m | grep - | awk '{print $4}'`M  >> /scripts/buffers-free.txt 
 
#抓取Swap分区free值(以追加的方式写入文件>>) 
echo Swap-free: `free -m | grep Swap | 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
# chmod a+x /scripts/free-mem.sh

4、查看内存监控的结果文件:

# cat /scripts/freemem.txt

5、编写free结果文件邮件发送脚本:

# vim /scripts/sendmail-mem.sh
#!/bin/bash 
#把生成的freemem.txt文件通过邮件发送给用户 
 
#提取本服务器的IP地址信息 
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` 
 
#提取当前日期时间 
today=`date -d "0 day" +%Y年%m月%d日` 
 
#发送内存监控结果邮件 
echo "这是$IP服务器$today的内存监控报告,请下载附件。" | mutt -s "$IP服务器$today内存监控报告" -a /scripts/freemem.txt fuquanjun@xxx.com
# chmod a+x /scripts/sendmail-mem.sh

六、监控系统交换分区swap的情况,当使用超过80%的时候发告警邮件:


# vim /scripts/swap-warning.sh
#!/bin/bash 
 
#提取本服务器的IP地址信息 
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` 
 
#系统分配的交换分区总量