linux占用磁盘空间的脚本,Linux Shell脚本监视磁盘空间使用情况并发送电子邮件...

在本教程中,我们将编写一个shell脚本来监视Linux系统上的磁盘空间使用情况。当系统达到给定阈值时,它将触发邮件到相应的电子邮件ID,我们在本文中添加了四个shell脚本,每个脚本用于不同的目的。在介绍之前,我想澄清一下我注意到的关于磁盘空间使用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

那就对了,其实当我第一次运行脚本时,我遇到了同样的问题,后来,我找到了根本原因。

在shell脚本中使用“df -h”或“df -H”在基于RHEL 5和RHEL 6的系统上进行磁盘空间警报时,将收到上面错误消息,因为输出的格式不正确,见下面的输出。

为了解决这个问题,我们需要使用“df -Ph”(POSIX输出格式),但默认情况下“df -h”在基于RHEL 7的系统上运行正常:

# df -h

输出如下图信息:

62dec3816cae1d5c8b0318ee110741a8.png

方法一

可以使用以下shell脚本来监视Linux系统上的磁盘空间使用情况。当系统达到给定的阈值限制时,它将发送电子邮件,在此示例中,我们将阈值限制设置为60%用于测试目的,可以根据你的要求更改此限制。

如果多个文件系统达到给定的阈值限制,它将发送多个邮件,因为脚本正在使用循环。

此外,请替换你的电子邮件ID:

# 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)" ywnz@gmail.com

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

方法二

或者,可以使用以下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)" ywnz@gmail.com

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

方法三

非常简单明了:

*/10 * * * * df -Ph | sed s/%//g | awk '{ if($5 > 60) print $0;}' | mail -s "Disk Space Alert On $(hostname)" ywnz@gmail.com

输出:我收到了一封包含所有提醒的邮件,如下图:

61a0c5fb98801b28abcaff102788334d.png

方法四

如果有人想监视,那么可以使用以下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" ywnz@gmail.com

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分钟后收到电子邮件警报(取决于时间),比如说,如果你的系统达到8.25的限制,那么你将在另外5分钟内收到电子邮件警报。

相关主题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值