• 【Linux_Shell 脚本编程学习笔记四、监控系统内存并报警企业案例脚本】


        前置知识:awk

        参考学习博客:https://www.cnblogs.com/bugingcode/p/8287914.html

         

           awk 'BEGIN{ commands } pattern{ commands } END{ commands }'

        

        第一步:运行BEGIN{ commands }语句块中的语句。

        第二步:从文件或标准输入(stdin)读取一行。然后运行pattern{ commands }语句块,它逐行扫描文件,从第一行到最后一行反复这个过程。直到文件所有被读取完成。

        第三步:当读至输入流末尾时。运行END{ commands }语句块。

        BEGIN语句块在awk開始从输入流中读取行之前被运行,这是一个可选的语句块,比方变量初始化、打印输出表格的表头等语句通常能够写在BEGIN语句块中。

        END语句块在awk从输入流中读取全然部的行之后即被运行。比方打印全部行的分析结果这类信息汇总都是在END语句块中完毕,它也是一个可选语句块。

        pattern语句块中的通用命令是最重要的部分,它也是可选的。假设没有提供pattern语句块,则默认运行{ print },即打印每个读取到的行。awk读取的每一行都会运行该语句块。

        这三个部分缺少任何一部分都可以。

        awk 简单实用小案例:

        

        ls -lh | awk '{print $1}'

       

       

    在这里awk 后面没有BEGIN和END,跟着的是pattern,也就是每一行都会经过这个命令,在awk中$n,表示第几列,在这里表示打印每一行的第一列。

    • $0 当前记录(这个变量中存放着整个行的内容)
    • $1~$n 当前记录的第n个字段,字段间由FS分隔
    • FS 输入字段分隔符 默认是空格或Tab
    • NF 当前记录中的字段个数,就是有多少列
    • NR 已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。
    • FNR 当前记录数,与NR不同的是,这个值会是各个文件自己的行号
    • RS 输入的记录分隔符, 默认为换行符
    • OFS 输出字段分隔符, 默认也是空格
    • ORS 输出的记录分隔符,默认为换行符
    • FILENAME 当前输入文件的名字

        脚本要求:

                  开发shell 脚本判断系统神域内存大小,如果低于100 M 就邮件报警给管理员,并且加入系统定时任务 每3 分钟执行一次检查

           

    #!/bin/sh
    free=$(free -m | awk 'NR==2{print $4}')
    # 判断当前内存是否小于 100 
    if [ $free -lt 100 ];then
            echo " 当前内存不足,可用内存大小为:$free(M)"
    else
        echo "$free .当前内存充足"
    fi

        然后在配置上定时任务 和发送邮件就完成了

        

        第二步:配置邮件
          echo set from=adm1nistrator@163.com smtp=smtp.163.com smtp-auth-user=572891887 smtp-auth-password=darker520. smtp-auth=login
        >/etc/mail.rc

        第三步: 定时任务
          tail -2 /var/spool/cron/root

           

  • 相关阅读:
    HZOI20190906模拟38 金,斯诺,赤
    HZOI20190903模拟36 字符,蛋糕,游戏
    HZOI20190902模拟35题解
    HZOI20190829模拟33题解
    HZOI20190828模拟32题解
    HZOI20190823模拟31题解
    HZOI20190823 C magic
    HZOI20190822模拟29题解
    HZOI20190821模拟28题解
    P2925 [USACO08DEC]干草出售Hay For Sale 题解
  • 原文地址:https://www.cnblogs.com/kangxinxin/p/11243664.html
Copyright © 2020-2023  润新知