前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux_Shell 脚本编程学习笔记四、监控系统内存并报警企业案例脚本】

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

作者头像
梅花
发布2020-09-28 10:54:15
6180
发布2020-09-28 10:54:15
举报
文章被收录于专栏:梅花的学习记录

    前置知识:awk

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

代码语言:javascript
复制
       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 简单实用小案例:

代码语言:javascript
复制
    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 分钟执行一次检查

代码语言:javascript
复制
#!/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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档