首页 > 系统相关 >检测CPU,内存,磁盘使用率shell

检测CPU,内存,磁盘使用率shell

时间:2023-05-30 09:47:13浏览次数:47  
标签:shell MEM 内存 USAGE 磁盘 使用率 CPU

检测CPU,内存,磁盘使用率shell


 

1.检测CPU,内存,磁盘使用率超过80%,则发送邮件告警

#!/bin/bash

#当前主机ip
HOST=$(ip a show eth0 | grep '\inet\b' | awk '{print $2}' | sed 's/\/.*//')
#告警邮箱
[email protected] # 磁盘使用百分比阈值 DISK_USAGE_THRESHOLD=80 # CPU 使用百分比阈值 CPU_USAGE_THRESHOLD=80 # 内存使用百分比阈值 MEM_USAGE_THRESHOLD=80 # 获取当前时间 DATE=$(date +"%Y-%m-%d %H:%M:%S") # 检查磁盘使用率 DISK_USAGE=$(df -h | awk '{if ($NF=="/") {print $5}}' | sed 's/%//g') if [ $DISK_USAGE -ge $DISK_USAGE_THRESHOLD ]; then # 发送磁盘告警邮件 echo "当前主机为$HOST: 磁盘使用率高于 $DISK_USAGE_THRESHOLD%,请及时处理!" | mail -s "磁盘告警" $MAIL &>/dev/null fi # 检查 CPU 使用率 #CPU_USAGE=$(top -b -n 1 | grep -i "Cpu(s)" | awk '{printf "%d", $8}') CPU_USAGE=$(mpstat 1 1 | awk '/Average:/ {print 100-$NF}') if [ $CPU_USAGE -ge $CPU_USAGE_THRESHOLD ]; then # 发送 CPU 告警邮件 echo "当前主机为$HOST: CPU 使用率高于 $CPU_USAGE_THRESHOLD%,请及时处理!" | mail -s "CPU 告警" $MAIL &>/dev/null fi # 检查内存使用率 MEM_TOTAL=$(free -m | awk '{if ($1=="Mem:") {print $2}}') MEM_USED=$(free -m | awk '{if ($1=="Mem:") {print $3}}') MEM_USAGE=$((100 * $MEM_USED / $MEM_TOTAL)) if [ $MEM_USAGE -ge $MEM_USAGE_THRESHOLD ]; then # 发送内存告警邮件 echo "当前主机为$HOST: 内存使用率高于 $MEM_USAGE_THRESHOLD%,请及时处理!" | mail -s "内存告警" $MAIL &>/dev/null fi

2.配置邮箱

修改/etc/mail.rc文件

#配置邮件客户端及授权码
# 设置发件人地址 set [email protected] # 设置SMTP服务器和端口 set smtp=smtp.qq.com # 设置SMTP认证信息 set [email protected] set smtp-auth-password=sadfasdafsdfas (授权码) # 如果需要,启用加密选项 #set smtp-use-starttls=yes set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb

 

标签:shell,MEM,内存,USAGE,磁盘,使用率,CPU
From: https://www.cnblogs.com/haoee/p/17442354.html

相关文章

  • 新版本Edge浏览器如何查看每一个网页的内存占用和cpu使用情况
       ......
  • Shell脚本开发项目
    一、日志文件的备份和还原shell脚本:客户机:1、通过修改配置文件,来实现发送日志到远程服务器 vim/etc/rsyslog.conf*.*@@remote…前面的*服务名称(日志文件)后面的*代表等级@@TCP协议发送写入登录日志的服务 authpriv.*@@192.168.134.130:514(远程服务器的ip和端口)2.临时关闭防火......
  • Shell脚本实战(一)
    1、前言Shell脚本的语法规则不复杂,在Linux系统很重要,一些操作可以整合成一个shell脚本,节省时间,本文不去讲述shell的语法规则,相关的资料网上很多,只需要多使用即可,此处记录在实际工作中用到shell脚本,积累一些常用的用法,后续也可以参考。2、功能点因为项目原因,c++代码体系非常庞大......
  • powershell 更新版本
    在Windows操作系统中,可以使用PowerShell命令行工具来更新版本。具体地说,可以按照以下步骤进行操作:打开PowerShell:在开始菜单中搜索“PowerShell”,然后单击打开。检查Windows版本:在PowerShell命令行中输入“winver”,然后按回车键执行。这将显示当前Windows版本的详细信息,包括......
  • shell正则匹配捕获引用进行IP匹配
    在服务器上加了一个服务检测机制,用到正则来匹配IP和捕获分组。shell和其他语言一样也可以使用正则分组捕获,不过不能使用$1或1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]}简单的测试如下所示:#!/bin/baship="121.0.2.2"if[......
  • Shell常见命令
    Shell是一个应用程序,它负责接收用户输入的命令,然后根据命令做出相应的动作,Shell负责将应用层或者用户输入的命令传递给系统内核,由操作系统内核来完成相应的工作,然后将结果反馈给应用层或者用户 2.4Shell命令的格式如下: command-options[argument]  command:......
  • shell中针对sudo需要密码时的处理
    方式一#shell脚本中自动为sudo输入密码echo123456|sudo-Saptupdate-S,--stdinWritetheprompttothestandarderrorandreadthepasswordfromthestandardinputinsteadofusingtheterminaldevice.将提示写入标准错误,从标准输入读取密码,而不是使用终......
  • shell和命令行参数有关的变量
    $0-----当前程序的名称,实际上是一个内部参数,不同于$1,$2....因为它必须有!$#----传递给程序的总的参数数目,也就是那个传说中的数组大小$?----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。$*----传递给程序的所有参数组成的字符串。$@----......
  • PowerShell在VC上批量创建虚拟机-for-Linux
    原创文档编写不易,未经许可请勿转载。文档中有疑问的可以邮件联系我。邮箱:[email protected]本文使用Powershell调用VMware-PowerCLI实现批量创建虚拟机的功能。环境说明软件名版本说明WindowsWindows10专业版21H2操作系统UbuntuUbuntu22.04.1LTS操作系统......
  • LabVIEW|小技巧:While循环结构加上时间延时可降低CPU资源利用率
    笔者在用LabVIEW编程的时候,用到while循环结构时,除了添加必要的停止标志外,经常忘记加上一个时间延时,这种做法不可取,While死循环会大量消耗CPU,一般5个While死循环就足以占用接近百分百的CPU。这是一个的情况:多加几个,CPU利用率激增,程序可能崩了:查看计数i的值,变化非常快:加上1ms的延时后......