千家信息网

linux系统CPU内存磁盘监控发送邮件脚本之二

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,#!/bin/bashexport PATHexport LANG=zh_CN.UTF-8###top之后输入数字1,可以查看每颗CPU的情况.###先配置好mailx邮箱账号密码:#cat>/etc
千家信息网最后更新 2024年09月22日linux系统CPU内存磁盘监控发送邮件脚本之二

#!/bin/bash

export PATH

export LANG=zh_CN.UTF-8

#

#

#top之后输入数字1,可以查看每颗CPU的情况.

#

#

#先配置好mailx邮箱账号密码:

#cat>/etc/mail.rc<<"EOF"

#set sendcharsets=iso-8859-1,utf-8

#set from=xxx@163.com

#set smtp=smtp.163.com

#set smtp-auth-user=xx@163.com

#set smtp-auth-password=xxx

#set smtp-auth=login

#EOF

#文件存放位置

#

#判断是否安装bc

ping -c 2 www.baidu.com || exit 5

[ `echo "1 > 2"|bc` ] || yum install bc -y

sleep 3

[ `rpm -qa|grep dos2unix` ] || yum install dos2unix -y

sleep 3


#

#

#时间

readonly times=$(date +%Y"/"%m"/"%d" "%k":"%M)

#服务器IP

readonly machine=$(ip add | grep inet|grep -v 'inet6\|127.0.0.1'|awk '{ print $2 }' | sed 's/\/.*$//')

readonly names=$(hostname)

#cpu个数

readonly cpuinfos=$(cat /proc/cpuinfo|grep processor|wc -l)

#在线用户数

readonly onlines='2'

#cpu负载阈值

readonly cpuload='80'

#判断用户在线数

userd=$(top -n 1|grep users|awk -F '[, ]+' '{print $6}')

whos=$(who)

if [ $userd > $onlines ];then

echo "$times $machine 当前在线用户数: $whos"

fi


#

#

function top_check(){

#服务器运行多久

runup=$(top -n 1|grep user|awk -F '[, ]+' '{print $5}')

#用户空间占用CPU百分比

cpuus=$(top -n 1|grep Cpu|awk -F "," '{print $1}'|awk -F " " '{print $2}')

#内核空间占用CPU百分比

cpusy=$(top -n 1|grep Cpu|awk -F "," '{print $2}'|awk -F " " '{print $2}')

#改变过优先级的进程占用CPU的百分比

cpuni=$(top -n 1|grep Cpu|awk -F "," '{print $3}'|awk -F " " '{print $2}')

#空闲CPU百分比

cpuid=$(top -n 1|grep Cpu|awk -F "," '{print $4}'|awk -F " " '{print $2}')

#I/O等待占用CPU的百分比

cpuwa=$(top -n 1|grep Cpu|awk -F "," '{print $5}'|awk -F " " '{print $2}')

#硬中断占用CPU的百分比

cpuhi=$(top -n 1|grep Cpu|awk -F "," '{print $6}'|awk -F " " '{print $2}')

#软中断占用CPU的百分比

cpusi=$(top -n 1|grep Cpu|awk -F "," '{print $7}'|awk -F " " '{print $2}')

#虚拟 CPU 等待实际 CPU 的时间的百分比

cpust=$(top -n 1|grep Cpu|awk -F "," '{print $8}'|awk -F " " '{print $2}')

}


function load_time(){

#一分钟负载

load1=$(top -n 1|grep user|awk -F '[, ]+' '{print $11}')

#五分钟负载

load5=$(top -n 1|grep user|awk -F '[, ]+' '{print $12}')

#十五分钟负载

load15=$(top -b -n 1|grep user|awk '{print $NF}')

}


function load_mem(){

#内存总容量

memtotal=$(($(top -n 1|grep buff/cache|awk -F '[, ]+' '{print $4}') / 1024))

#当前空闲内存

memfree=$(($(top -n 1|grep buff/cache|awk -F '[, ]+' '{print $7}') / 1024))

#当前已使用内存

memused=$(($(top -n 1|grep buff/cache|awk -F '[, ]+' '{print $10}') / 1024))

#内存buff/cache

membuff=$(($(top -n 1|grep buff/cache|awk -F '[, ]+' '{print $13}') / 1024))

#swap总容量

swaptotal=$(($(top -n 1|grep avail|awk -F '[, ]+' '{print $3}') / 1024))

#swap当前空闲

swapfree=$(($(top -n 1|grep avail|awk -F '[, ]+' '{print $6}') / 1024))

#swap当前已使用

swapused=$(($(top -n 1|grep avail|awk -F '[, ]+' '{print $9}') / 1024))

#swap内存avail Mem

swapavail=$(($(top -n 1|grep avail|awk -F '[, ]+' '{print $11}') / 1024))

}


function echo_run(){

echo "$times $machine 运行多久: $runup 分钟 "

}



function echo_cpu(){

echo "$times $machine 用户空间占用CPU百分比: $cpuus "

echo "$times $machine 内核空间占用CPU百分比: $cpusy "

echo "$times $machine 改变过优先级的进程占用CPU的百分比: $cpuni "

echo "$times $machine 空闲CPU百分比: $cpuid "

echo "$times $machine I/O等待占用CPU的百分比: $cpuwa"

echo "$times $machine 硬中断占用CPU的百分比: $cpuhi "

echo "$times $machine 软中断占用CPU的百分比: $cpusi "

echo "$times $machine 虚拟 CPU 等待实际 CPU 的时间的百分比: $cpust "

}


function echo_mem(){

echo "$times $machine 内存总容量: $memtotal M "

echo "$times $machine 空闲内存: $memfree M "

echo "$times $machine 已使用内存: $memused M "

echo "$times $machine 内存buff/cache: $membuff M "

echo "$times $machine swap总共: $swaptotal M "

echo "$times $machine swap空闲: $swaptotal M "

echo "$times $machine swap已使用: $swapused M "

echo "$times $machine swap内存avail Mem: $swapavail M "

}


function echo_load(){

echo "$times $machine 1分钟CPU负载: $load1 "

echo "$times $machine 5分钟CPU负载: $load5 "

echo "$times $machine 15分钟CPU负载: $load15 "

}


#调用函数

top_check

load_time

load_mem

#

if [ `echo "$load1 > $cpuinfos"|bc` -eq 1 ];then

readonly runlog="/tmp/runs.log"

echo_run >$runlog

readonly loadlog="/tmp/load.log"

echo_load >$loadlog

readonly cpulog="/tmp/cpus.log"

echo_cpu >$cpulog

readonly memlog="/tmp/mems.log"

echo_mem >$memlog

#发送邮件

dos2unix -k $runlog

dos2unix -k $loadlog

dos2unix -k $cpulog

dos2unix -k $memlog

mailx -s "服务器$names $machine" lumia98@vip.qq.com < $runlog

mailx -s "服务器$names $machine" lumia98@vip.qq.com < $loadlog

mailx -s "服务器$names $machine" lumia98@vip.qq.com < $cpulog

mailx -s "服务器$names $machine" lumia98@vip.qq.com < $memlog

fi



#判断I/O wa是否过高

if [ `echo "$cpuwa > 60"|bc` -eq 1 ];then

readonly ioslogs="/tmp/wa.log"

iostat -cdx 3 > $ioslogs

dos2unix -k $ioslogs

mailx -s "服务器$names $machine的负载wa%" lumia98@vip.qq.com < $ioslogs

fi


#判断磁盘空间不足

disks=$(df | grep /dev|grep -v "shm\|boot\|devtmpfs"|awk '{print $5}'|sed 's/\%.*$//')

for x in $disks

do

if [ $x -gt 70 ]; then

disklog="/tmp/disk.log"

df -h >$disklog

dos2unix -k $disklog

mailx -s "服务器$names $machine" lumia98@vip.qq.com < $disklog

fi

done

百分 百分比 内存 服务器 服务 空闲 用户 空间 容量 时间 在线 优先级 内核 实际 用户数 进程 运行 磁盘 邮件 个数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 蔡甸区人民医院网络安全 网易服务器什么时候开服 数据库锁表分析 决定数据库实例的大小的参数是 北京服务器设备检测公司 上海蔬菜软件开发 知网查论文查哪些数据库 微信软件开发类图片素材 青浦区营销网络技术服务创造辉煌 网络技术的销售渠道 渣打科营 软件开发 pk服务器 为什么应用连不上服务器视频 论文技术要求及原始数据库 海淀区信息化网络技术服务哪家好 我的世界服务器怎么登陆 网络安全装置属于电子设备 服务器是不是一定要用固定ip 深圳电商软件开发热线 软件开发文科生能学吗 常州本地软件开发公司电话 网络技术服务开票税点 aspcms 数据库路径 河北银行软件开发公司有哪些 渤海智融天津互联网科技公司 安徽创盈网络技术 doors数据库 网络安全靠师生心得体会 网络安全宣传周活动讲话 广州分创互联网科技有限公司
0