意义:
每天定时将服务器系统参数发送至管理员邮箱,便于管理员对于系统性能的把控,减少登录系统再使用命令的繁琐步骤。
shell监控脚本:
1 #!/bin/bash 2 hostip=`ifconfig ens160 | grep inet | awk 'NR==1{print $2}'` 3 cpu_usage=$(echo "100-`top -n1 | awk 'NR==3{print $8}'`"|bc) 4 mem_total=`free -h |awk '/Mem:/{print $2}'` 5 mem_used=`free -m |awk '/Mem:/{print $3+$6}'` 6 mem_free=`free -h |awk '/Mem:/{print $4}'` 7 mem_rate=$(echo "scale=2;$mem_used *100/ `free -m |awk '/Mem:/{print $2}'`"|bc) 8 disk_total=`df -h / | tail -n 1 | awk '{ print $2}'` 9 disk_used=`df -h / | tail -n 1 | awk '{ print $3}'` 10 disk_free=`df -h / | tail -n 1 | awk '{ print $4}'` 11 disk_rate=`df -h / | tail -n 1 | awk '{ print $5}'` 12 13 echo -e " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^" 14 echo -e "***主机$(hostname)系统监控数据***" 15 echo "[$hostip]" 16 echo "$(date)" 17 echo -e "----------------------------" 18 echo -e " |=-> cpu利用率:$cpu_usage%" 19 echo -e " |=-> 内存利用率:$mem_rate% 总内存:$mem_total 已使用内存(包含buff/cache): $mem_used M 空闲内存:$mem_free" 20 echo -e " |=-> 磁盘利用率:$disk_rate 磁盘总空间:$disk_total 已使用磁盘空间: $disk_used 空闲磁盘空间:$disk_free" 21 echo -e ''' 22 ---------------------- 23 Powered by: 73号弓箭手 24 Copyright © Cooper_73 25 ---------------------- 26 '''
脚本执行效果:
发送至邮箱:
利用linux系统的mail发送邮件:
配置mail:/etc/mail.rc
1 设置发件人地址、SMTP 服务器、发件人邮箱名、密码、 2 set from=xxx@qq.com 3 set smtp=smtp.qq.com 4 set smtp-auth-user=xxx@qq.com 5 set smtp-auth-password=xxxxx 6 set smtp-auth=login
注意:使用QQ邮箱时,由于腾讯安全限制,密码需要使用授权码(在qq邮箱设置中获取授权码),企业邮箱无此限制,直接使用邮箱密码。
配置定时任务:
1 ./linux_system_monitor.sh | mail -s "Linux_System_Monitor-Report-$(date)" mail@mail.com.cn
触发定时任务验证: