加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

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

发布时间:2019-05-21 08:21:22 所属栏目:Windows 来源:Magesh Maruthamuthu
导读:副标题#e# 市场上有很多用来监控 Linux 系统的监控工具,当系统到达阀值后它将发送一封邮件。它监控所有的东西例如 CPU 利用率、内存利用率、交换空间利用率、磁盘空间利用率等等。然而,它更适合小环境和大环境。 想一想如果你只有少量系统,那么什么是最
副标题[/!--empirenews.page--]

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

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

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

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

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

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

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

  1. # sh /opt/script/disk-usage-alert-old.sh
  2.  
  3. /dev/mapper/vg_2g-lv_root
  4. test-script.sh: line 7: [: /dev/mapper/vg_2g-lv_root: integer expression expected
  5. / 9.8G

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

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

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

  1. # df -h
  2.  
  3. Filesystem Size Used Avail Use% Mounted on
  4. /dev/mapper/vg_2g-lv_root
  5. 10G 6.7G 3.4G 67% /
  6. tmpfs 7.8G 0 7.8G 0% /dev/shm
  7. /dev/sda1 976M 95M 830M 11% /boot
  8. /dev/mapper/vg_2g-lv_home
  9. 5.0G 4.3G 784M 85% /home
  10. /dev/mapper/vg_2g-lv_tmp
  11. 4.8G 14M 4.6G 1% /tmp

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

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

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

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

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

  1. # vi /opt/script/disk-usage-alert.sh
  2.  
  3. #!/bin/sh
  4. df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;
  5. do
  6. echo $output
  7. used=$(echo $output | awk '{print $1}' | sed s/%//g)
  8. partition=$(echo $output | awk '{print $2}')
  9. if [ $used -ge 60 ]; then
  10. echo "The partition "$partition" on $(hostname) has used $used% at $(date)" | mail -s "Disk Space Alert: $used% Used On $(hostname)" [email protected]
  11. fi
  12. done

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

  1. The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019
  2.  
  3. 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 分钟运行一次。

  1. # crontab -e
  2. */10 * * * * /bin/bash /opt/script/disk-usage-alert.sh

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

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

  1. # vi /opt/script/disk-usage-alert-1.sh
  2.  
  3. #!/bin/sh
  4. df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;
  5. do
  6. max=60%
  7. echo $output
  8. used=$(echo $output | awk '{print $1}')
  9. partition=$(echo $output | awk '{print $2}')
  10. if [ ${used%?} -ge ${max%?} ]; then
  11. echo "The partition "$partition" on $(hostname) has used $used at $(date)" | mail -s "Disk Space Alert: $used Used On $(hostname)" [email protected]
  12. fi
  13. done

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读