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

454a93067307e61110907223135ad14b.png

市场上有很多用来监控 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:line7:[:/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

FilesystemSizeUsedAvailUse%Mountedon

/dev/mapper/vg_2g-lv_root

10G6.7G3.4G67%/

tmpfs7.8G07.8G0%/dev/shm

/dev/sda1976M95M830M11%/boot

/dev/mapper/vg_2g-lv_home

5.0G4.3G784M85%/home

/dev/mapper/vg_2g-lv_tmp

4.8G14M4.6G1%/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 }'|whileread output;

do

echo$output

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

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

if[$used-ge60];then

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

fi

done

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

Thepartition"/dev/mapper/vg_2g-lv_home"on2g.CentOS7has used85%atMonApr2906:16:14IST2019

Thepartition"/dev/mapper/vg_2g-lv_root"on2g.CentOS7has used67%atMonApr2906:16:14IST2019

最终添加了一个 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 }'|whileread 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)"[emailprotected]

fi

done

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

Thepartition"/dev/mapper/vg_2g-lv_home"on2g.CentOS7has used85%atMonApr2906:16:14IST2019

Thepartition"/dev/mapper/vg_2g-lv_root"on2g.CentOS7has used67%atMonApr2906:16:14IST2019

最终添加了一个 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]

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

FilesystemSizeUsedAvailUseMountedon

/dev/mapper/vg_2g-lv_root10G6.7G3.4G67/

/dev/mapper/vg_2g-lv_home5.0G4.3G784M85/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"[emailprotected]

fi

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

Thepartition/dev/mapper/vg_2g-lv_dbs on2g.CentOS6has used82%atMonApr2906:16:14IST2019

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

#crontab-e

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

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

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

【编辑推荐】

【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值