shell脚本3

# 实验案例一、
**编写sysmon.sh脚本
(1)使用df命令提取出根分区的磁盘占用率,赋值给变量DUG。
(2)使用mpstat命令提取CPU使用率(需安装sysstat软件包),赋值给变量CUG。
(3)使用free命令提取出内存使用率,赋值给变量MUG。
(4)判断上述监控项目是否超标,将需要告警的信息保存到/tmp/alert.txt文件。
(5)判断/tmp/alert.txt文件是否存在,若存在则作为告警邮件发送。

[root@localhost ~]# vi /root/sysmon.sh

#!/bin/bash
#提取性能监控指标(磁盘占用、CPU使用、内存使用)
DUG=$(df -hT | grep "/$" | awk '{print $6}' |awk -F% '{print $1}')
CUG=$(expr 100 - $(mpstat | tail -1 | awk '{print $10}' | awk -F. '{print $1}'))
MUG=$(expr $(free | grep "Mem" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))
#设置告警日志文件、告警邮箱
ALOG="/tmp/alert.txt"
AMAIL="root"
#判断是否记录告警
if [ $DUG -gt 1 ]
then
    echo "磁盘占用率:$DUG %" >> $ALOG
fi
if [ $CUG -gt 2 ]
then
   echo "CPU使用率:$CUG %" >> $ALOG 
fi
if [ $MUG -gt 3 ]
then
   echo "内存使用率:$MUG %" >> $ALOG
fi
#断是否发送告警邮件,最后删除告警日志文件
if [ -f $ALOG ]
then
   cat $ALOG | mail -s "Host Alert" $AMAIL
   rm -rf $ALOG
fi

[root@localhost ~]# chmod +x /root/sysmon.sh

***测试sysmon.sh脚本的执行情况***
(1)确认有可用的邮件服务器(如Postfix、Sendmail等),然后调低监控阈值,执行sysmon.sh脚本进行测试。

[root@localhost ~]# /root/sysmon.sh

(2)查收monitor@benet.com的邮箱,确认告警邮件内容。

[monitor@localhost ~]$ cat /var/spool/mail/root
X-Original-To: monitor@benet.com
……
From: root@benet.com (root)
内存使用率:91 %

**设置crontab计划任务**
(1)确认系统服务crond已经运行。

[root@localhost ~]# systemctl status crond
crond (pid  5839) 正在运行...

(2)添加crontab计划任务配置,每半小时调用一次sysmon.sh脚本程序。

[root@localhost ~]# crontab -e
08 * * *  /root/sysmon.sh

**实验案例二:判断内核版本是否大于3.4**

[root@localhost ~]# vi chkversion.sh

#!/bin/bash
Mnum=$(uname -r | awk -F. '{print $1}')
Snum=$(uname -r | awk -F. '{print $2}')
if [ $Mnum -gt 3 ]
then
echo "内核版本为:$Mnum.$Snum"
elif [ $Mnum -eq 3 ] && [ $Snum -gt 4 ]
then
echo "内核版本为:$Mnum.$Snum"
else
echo "内核版本太低,无法继续!"
fi

[root@localhost ~]# chmod +x chkversion.sh
[root@localhost ~]# ./chkversion.sh
内核版本为:3.10

实验案例三、判断判断rpm包sysstat是否安装,如果没有安装则自动安装

[root@localhost ~]# vi chkinstall.sh


#!/bin/bash
rpm -q sysstat &> /dev/null
if [ $? -eq 0 ]
then
    echo "已安装 'rpm -q sysstat'"
else
    echo "未安装,尝试自动安装"
    RHEL_DIR="/media/Packages/"
    if [ -d $RHEL_DIR ]
    then
        cd $RHEL_DIR
        rpm -ivh sysstat-*.rpm && echo "安装完成。"
    else
        echo "错误:无法访问光盘目录:$RHEL_DIR"
    fi
fi

[root@localhost ~]# chmod +x chkinstall.sh
[root@localhost ~]# ./chkinstall.sh                 //未安装时的情况
未安装,尝试自动安装
Preparing...            ########################################### [100%]
   1:sysstat            ########################################### [100%]
安装完成。
[root@localhost ~]# ./chkinstall.sh                 //已安装时的情况
已安装 sysstat-7.0.2-3.el5

转载于:https://blog.51cto.com/13468179/2163110

资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高性价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特性,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值