6.{Linux}shell脚本应用(中)

Posted 运维心动力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.{Linux}shell脚本应用(中)相关的知识,希望对你有一定的参考价值。

What : 所学的计算机知识点是什么? 

wc -l(统计)例:unum'who | wc -l'

   [  条件表达式  ]中间可以加文件测试等。

文件测试:-d测试是否为目录,-e目录或文件是否存在,-f测试是否为文件,-r测试是否有读取权限,-w测试是否有写入权限,-x测试是否有执行权限。

整数值比较:-eq前一个等于后一个。-ne前一个不等于后一个,-gt前一个大于后一个,-lt前一个小于后一个,-le前一个小于等于后一个,-ge前一个大于等于后一个。例:[ $unnm -gt 5 ]  &&  echo "123"

字符串比较:= (前字符串等于后字符串),!=(前字符串不等于后字符串),-z(检测字符串是否为空)。例:[ $li != "123" ] && echo"not 123"

逻辑测试:&&,而且。||,或者。!逻辑否。

if语句:                                                  

单分支:                                         双分支:                            多分支:

if [ 条件测试]                                    if [ 条件测试 ]                    if [ 条件测试 ]

then                                                 then                                  then

命令序列                                          命令序列                          命令序列

fi                                                       else                                  elif  [ 条件测试2]

                                                         命令序列                          then

                                                         fi                                      命令序列

                                                                                                 else

                                                                                                 命令序列

                                                                                                 if

Why :为什么要引入这个知识点?解决什么问题? 

学习shell脚本

How :如何使用这个知识点? 

详情见下方实验。
Where :这个知识点用于何处? 

学习shell脚本

实验要求:

1、编写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 -h | grep "/$" | awk '{print $4}' | awk -F% '{print $1}')

②CUG=$(expr 100 - $(mpstat | tail -1 | awk '{print $10}' | awk -F. '{print $1}'))

③MUG=$(expr $(free | grep "cache:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))

# 设置告警日志文件、告警邮箱

ALOG="/tmp/alert.txt"

AMAIL="root"

④# 判断是否记录告警

if [ $DUG -gt 90 ]

then

    echo "磁盘占用率:$DUG %" >> $ALOG

fi

if [ $CUG -gt 80 ]

then

    echo "CPU使用率:$CUG %" >> $ALOG

fi

if [ $MUG -gt 90 ]

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


以上是关于6.{Linux}shell脚本应用(中)的主要内容,如果未能解决你的问题,请参考以下文章

Shell使用

简单的Shell 教程

Linux123Shell脚本编程

Shell 基础

Shell 基础

Linux定时释放缓存Shell脚本实现自动化运维