linux磁盘使用情况脚本,技术|用 Linux Shell 脚本来监控磁盘使用情况并发送邮件...

市场上有很多用来监控 Linux 系统的监控工具,当系统到达阀值后它将发送一封邮件。它监控所有的东西例如 CPU 利用率、内存利用率、交换空间利用率、磁盘空间利用率等等。然而,它更适合小环境和大环境。

想一想如果你只有少量系统,那么什么是最好的方式来应对这种情况。

是的,我们想要写一个 shell 脚本 来实现。

在这篇指南中我们打算写一个 shell 脚本来监控系统的磁盘空间使用率。当系统到达给定的阀值,它将给对应的邮件地址发送一封邮件。在这篇文章中我们总共添加了四个 shell 脚本,每个用于不同的目的。之后,我们会想出其他 shell 脚本来监控 CPU,内存和交换空间利用率。

在此之前,我想澄清一件事,根据我观察的磁盘空间使用率 shell 脚本使用情况。

大多数用户在多篇博客中评论说,当他们运行磁盘空间使用率脚本时他们获得了以下错误。

# sh /opt/script/disk-usage-alert-old.sh

/dev/mapper/vg_2g-lv_root

test-script.sh: line 7: [: /dev/mapper/vg_2g-lv_root: integer expression expected

/ 9.8G

是的,这是对的。甚至,当我第一次运行这个脚本的时候我遇到了相同的问题。之后,我发现了根本原因。

当你在基于 RHEL 5 & RHEL 6 的系统上运行包含用于磁盘空间警告的 df -h 或 df -H 的 shell 脚本中时,你会发现上述错误信息,因为输出格式不对,查看下列输出。

为了解决这个问题,我们需要用 df -Ph (POSIX 输出格式),但是默认的 df -h 在基于 RHEL 7 的系统上运行的很好。

# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/vg_2g-lv_root

10G 6.7G 3.4G 67% /

tmpfs 7.8G 0 7.8G 0% /dev/shm

/dev/sda1 976M 95M 830M 11% /boot

/dev/mapper/vg_2g-lv_home

5.0G 4.3G 784M 85% /home

/dev/mapper/vg_2g-lv_tmp

4.8G 14M 4.6G 1% /tmp

方法一:Linux Shell 脚本来监控磁盘空间使用率和发送邮件

你可以使用下列 shell 脚本在 Linux 系统中来监控磁盘空间使用率。

当系统到达给定的阀值限制时,它将发送一封邮件。在这个例子中,我们设置阀值为 60% 用于测试目的,你可以改变这个限制来符合你的需求。

如果超过一个文件系统到达给定的阀值,它将发送多封邮件,因为这个脚本使用了循环。

同样,替换你的邮件地址来获取这份警告。

# vi /opt/script/disk-usage-alert.sh

#!/bin/sh

df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;

do

echo $output

used=$(echo $output | awk '{print $1}' | sed s/%//g)

partition=$(echo $output | awk '{print $2}')

if [ $used -ge 60 ]; then

echo "The partition \"$partition\" on $(hostname) has used $used% at $(date)" | mail -s "Disk Space Alert: $used% Used On $(hostname)" [email protected]

fi

done

输出:我获得了下列两封邮件警告。

The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019

The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019

最终添加了一个 cronjob 来自动完成。它会每 10 分钟运行一次。

# crontab -e

*/10 * * * * /bin/bash /opt/script/disk-usage-alert.sh

方法二:Linux Shell 脚本来监控磁盘空间使用率和发送邮件

作为代替,你可以使用下列的 shell 脚本。对比上面的脚本我们做了少量改变。

# vi /opt/script/disk-usage-alert-1.sh

#!/bin/sh

df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;

do

max=60%

echo $output

used=$(echo $output | awk '{print $1}')

partition=$(echo $output | awk '{print $2}')

if [ ${used%?} -ge ${max%?} ]; then

echo "The partition \"$partition\" on $(hostname) has used $used at $(date)" | mail -s "Disk Space Alert: $used Used On $(hostname)" [email protected]

fi

done

输出:我获得了下列两封邮件警告。

The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019

The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019

最终添加了一个 cronjob 来自动完成。它会每 10 分钟运行一次。

# crontab -e

*/10 * * * * /bin/bash /opt/script/disk-usage-alert-1.sh

方法三:Linux Shell 脚本来监控磁盘空间使用率和发送邮件

我更喜欢这种方法。因为,它工作起来很有魔力,你只会收到一封关于所有事的邮件。

这相当简单和直接。

*/10 * * * * df -Ph | sed s/%//g | awk '{ if($5 > 60) print $0;}' | mail -s "Disk Space Alert On $(hostname)" [email protected]

输出: 我获得了一封关于所有警告的邮件。

Filesystem Size Used Avail Use Mounted on

/dev/mapper/vg_2g-lv_root 10G 6.7G 3.4G 67 /

/dev/mapper/vg_2g-lv_home 5.0G 4.3G 784M 85 /home

方法四:Linux Shell 脚本来监控某个分区的磁盘空间使用情况和发送邮件

# vi /opt/script/disk-usage-alert-2.sh

#!/bin/bash

used=$(df -Ph | grep '/dev/mapper/vg_2g-lv_dbs' | awk {'print $5'})

max=80%

if [ ${used%?} -ge ${max%?} ]; then

echo "The Mount Point "/DB" on $(hostname) has used $used at $(date)" | mail -s "Disk space alert on $(hostname): $used used" [email protected]

fi

输出: 我得到了下面的邮件警告。

The partition /dev/mapper/vg_2g-lv_dbs on 2g.CentOS6 has used 82% at Mon Apr 29 06:16:14 IST 2019

最终添加了一个 cronjob 来自动完成这些工作。它将每 10 分钟运行一次。

# crontab -e

*/10 * * * * /bin/bash /opt/script/disk-usage-alert-2.sh

注意: 你将在 10 分钟后收到一封邮件警告,因为这个脚本被计划为每 10 分钟运行一次(但也不是精确的 10 分钟,取决于时间)。

例如这个例子。如果你的系统在 8:25 到达了限制,你将在 5 分钟后收到邮件警告。希望现在讲清楚了。

本文由 LCTT 原创编译,Linux中国 荣誉推出 linisi.svg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

markdown 语法_Markdown 基本语法

Markdown 是一种轻量级的标记语言(markup language),由 John Gruber(1973 ~)与 Aaron Swartz (1986 ~ 2013)于2004年创造,被网站用于编写说明文件(readme)、技…

原来fb可以在一个工程里面输出多个swf模块

转载于:https://www.cnblogs.com/wonderKK/archive/2013/01/23/2873555.html

MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析...

文章出处:http://inter12.iteye.com/blog/1430144 MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析 1.前置条件: 本次是基于小数据量,且数据块…

控件(View)之TextSwitcher, Gallery, ImageSwitcher, GridView, ListView, ExpandableList【转】

在 Android 中使用各种控件(View) TextSwitcher - 文字转换器控件(改变文字时增加一些动画效果)Gallery - 缩略图浏览器控件ImageSwitcher - 图片转换器控件(改变图片时增加一些动画效果)GridView - 网格控件ListView - 列表控件E…

linux下php反编译apk,php反编译

Host IP:运行APP的Host侧IP地址。 Compile Path:推理场景为ATC的执行路径,训练场景为脚本执行路径。用于存储算子编译中间生成的输出件和pbtxt,一般为“kernel_meta”文件的父路径(例如:~/model_convert)。 图1 参数配…

13 对话一 【96】

13 对话一 【96】 This line is taking forever! It sure is. But lunch hour is the busiest time of day. That’s true. Especially at the end of the month. Mm-hmm. You know, you look really familiar. Don’t I know you from somewhere? I’m not sure. I think we…

程序员狂想曲

【前序】博客园首页对博文的规定有:原创精品、排版整齐、有足够的篇幅、与程序员相关、能够让读者从中学到知识的基本要求。我心想,除非不同时空,否则这绝对是我原创的;段落分明排版自然问题不大;一千三百来字的文章远…

python异常处理的语法格式_Python异常处理

Python异常处理 一. 异常的概念 程序在运行时,如果 Python 解释器 遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常。 程序停止执行并且提示错误信息 这个动作,我们通常称之为:抛出(ra…

Cheatsheet: 2010 04.26 ~ 04.30

Web Telling robots about your crawl-able Ajax apps Scrollin’ Scrollin’ Scrollin’ to the NextPoint The Big List of JavaScript, CSS, and HTML Development Tools, Libraries, Projects, and Books Database MongoDB vs. SQL Server 2008 Performance Showdown Raven…

linux防ddos 软件下载,linux下防DDOS工具

DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限 制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP.DDoS deflate官方网站:http://deflate.medialayer.…

${oid?c}的使用

编辑器加载中... ${oid?c} 写在js里会报错,其实根本就不用转换,但是如果在非javascript里就要转换 ,因为会出现逗号问题 还有个问题要注意下: var orderId document.getElementsByName("orderId"); 获取的orderId如果…

从零开始山寨Caffe·零:必先利其器

工作环境 巧妇有了米炊 众所周知,Caffe是在Linux下写的,所以长久以来,大家都认为跑Caffe,先装Linux。 niuzhiheng大神发起了caffe-windows项目(解决了一些编译、API相异问题) 以及willyd大神发起的caffe-wi…

python单例_Python - 单例模式(Singleton)

单例模式(Singleton) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/23374575 单例模式 , 类的实例从始至终, 只 被创建一次 , 这些类可以用来管理一些资源; 需要 继承Object类 , 才可以使用类的方法 super() , 只实例化一次; 参见Python文档: Note super() …

Linux抓eth0网卡包的命令,Linux系统使用tcpdump命令抓包

前提条件:1. 一台安装有Linux的机器….这个是必要的;2. Tcpdump程序;3. 以下所有均是root用户登录操作,且命令不支持直接复制到Linux控制台,请手工输入!4.工具以及教程文档下载地址 点我操作步骤&#xff1a…

SilverLight非托管代码的初始化进度条方法

SilverLight非托管代码的初始化进度条方法 <script type"text/javascript"> 错误处理函数 function onSilverlightError(sender, args) ... //下载进度函数 function onSourceDownloadProgressChanged(sender, eventArgs) { sender.findN…

超全的学习资料——Oracle 从入门到精通

Oracle 从入门到精通 目录 一、SQL...................................................................................................................................................8 1.1、基本概念&#xff1a;..................................................…

common-collections中Java反序列化漏洞导致的RCE原理分析

2019独角兽企业重金招聘Python工程师标准>>> common-collections中Java反序列化漏洞导致的RCE原理分析 隐形人真忙 2015/11/11 22:40 0x00 背景 这几天在zone看到了有人提及了有关于common-collections包的RCE漏洞&#xff0c;并且http://zone.wooyun.org/content/…

linux nfs 配置_centos7 NFS 配置

NFS是什么最近项目上有这么个需求&#xff0c;客户端上传文件的时候&#xff0c;想把文件上传到另外一台服务器。本来想用ftp的&#xff0c;觉得太麻烦&#xff0c;就各种查资料&#xff0c;请教别人&#xff0c;后来发现&#xff0c;NFS这个东东真不错。NFS(网络文件系统)服务…

linux命令 waf,常用waf命令

常用waf命令一、配置及编译&#xff1a;$ ./waf configure [option]$ ./waf帮助&#xff1a; $ ./waf --help配置调试&#xff0c;优化调试&#xff1a;$ ./waf -d configure: debug,optimized改变flag: $ CXXFLAGS"-O3" ./waf configure或者&#xff1a; $CXXg-…

Windows Server 2003 导入Java生成的证书,保证iis对CAS的访问

开始 -- 运行-- mmc 打开了一个控制台程序 菜单 --> 文件 --> 添加/删除管理单元 (Ctrl M) 打开界面: 点击 "添加" 按钮,打开界面后选择 "证书",继续点此界面的添加,完成添加证书管理的操作 中间需要选择账户,我就选择的是 我的用户账户, 也可…