市面上有很多监控Linux系统的监控工具,它会在系统达到阈值时发送邮件。它监控CPU利用率、内存利用率、交换空间利用率、磁盘空间利用率等所有内容。但是,它更适合小型和大型环境。想想如果您只有少量系统,处理这种情况的最佳方法是什么。是的,我们要写一个shell脚本来做。在本指南中,我们将编写一个shell脚本来监视系统的磁盘空间使用情况。当系统达到给定的阈值时,它会向相应的电子邮件地址发送一封电子邮件。在本文中,我们总共添加了四个shell脚本,每个都有不同的用途。之后,我们将提出其他shell脚本来监控CPU、内存和交换空间利用率。在此之前,根据我对磁盘空间使用情况shell脚本使用情况的观察,我想澄清一件事。大多数用户在几个博客中评论说,他们在运行磁盘空间使用脚本时遇到以下错误。#sh/opt/script/disk-usage-alert-old.sh/dev/mapper/vg_2g-lv_roottest-script.sh:line7:[:/dev/mapper/vg_2g-lv_root:integerexpressionexpected/9.8Gis恩,那就对了。甚至,我第一次运行这个脚本时也遇到了同样的问题。后来,我找到了根本原因。当您在基于RHEL5和RHEL6的系统上运行包含df-h或df-H的shell脚本以发出磁盘空间警告时,您会发现上述错误消息,因为输出格式不正确,请参见下面的输出。要解决此问题,我们需要使用df-Ph(POSIX输出格式),但默认的df-h在基于RHEL7的系统上运行良好。#df-hFilesystemSizeUsedAvailUse%Mountedon/dev/mapper/vg_2g-lv_root10G6.7G3.4G67%/tmpfs7.8G07.8G0%/dev/shm/dev/sda1976M95M830M11%/boot/dev/mapper/vg_2g-lv_home5.0G4.3G784M85%/home/dev/mapper/vg_2g-lv_tmp4.8G14M4.6G1%/tmp方法一:LinuxShell脚本监控磁盘空间使用情况并发送邮件给你您可以使用以下shell脚本来监视Linux系统中的磁盘空间使用情况。当系统达到给定的阈值限制时,它会发送一封电子邮件。在此示例中,出于测试目的,我们将阈值设置为60%,您可以更改此限制以满足您的需要。如果超过一个文件系统达到给定的阈值,它将发送多封电子邮件,因为脚本使用循环。此外,替换您的电子邮件地址以获取此警告。#vi/opt/script/disk-usage-alert.sh#!/bin/shdf-Ph|grep-vE'^文件系统|tmpfs|cdrom'|awk'{打印$5,$1}'|同时读取输出;做echo$outputused=$(echo$output|awk'{print$1}'|seds/%//g)partition=$(echo$output|awk'{print$2}')if[$二手-ge60];然后echo"$(hostname)上的分区\"$partition\"在$(date)上使用了$used%"|mail-s"DiskSpaceAlert:$used%UsedOn$(hostname)"[emailprotected]fidone输出:我收到以下两封电子邮件警告。2g.CentOS7上的分区“/dev/mapper/vg_2g-lv_home”已使用85%atMonApr2906:16:14IST2019Thepartition"/dev/mapper/vg_2g-lv_root"on2g.CentOS7hasused67%在4月29日星期一06:16:14IST2019终于添加了一个cronjob来自动完成它。它将每10分钟运行一次。#crontab-e*/10****/bin/bash/opt/script/disk-usage-alert.sh方法2:LinuxShell脚本监控磁盘空间使用情况并发送电子邮件相反,您可以使用以下shell脚本.与上面的脚本相比,我们做了一些更改。#vi/opt/script/disk-usage-alert-1.sh#!/bin/shdf-Ph|grep-vE'^文件系统|tmpfs|cdrom'|awk'{打印$5,$1}'|whilereadoutput;domax=60%echo$outputused=$(echo$output|awk'{print$1}')分区=$(echo$output|awk'{print$2}')if[${used%?}-ge${max%?}];然后echo"$(hostname)上的分区\"$partition\"在$(date)上使用了$used"|mail-s"DiskSpaceAlert:$usedUsedOn$(hostname)"[emailprotected]fidone输出:我收到以下两封电子邮件警告。2g.CentOS7上的分区“/dev/mapper/vg_2g-lv_home”已使用85%atMonApr2906:16:14IST2019Thepartition"/dev/mapper/vg_2g-lv_root"on2g.CentOS7hasused67%在4月29日星期一06:16:14IST2019终于添加了一个cronjob来自动完成它。它将每10分钟运行一次。#crontab-e*/10****/bin/bash/opt/script/disk-usage-alert-1.sh方法3:LinuxShell脚本监控磁盘空间使用和发送电子邮件我更喜欢这种方法。因为,它就像魔术一样有效,您只需收到一封有关所有内容的电子邮件。它相当简单明了。*/10****df-Ph|seds/%//克|awk'{if($5>60)打印$0;}'|mail-s"DiskSpaceAlertOn$(hostname)"[emailprotected]输出:我收到一封包含所有警告的电子邮件。FilesystemSizeUsedAvailUseMountedon/dev/mapper/vg_2g-lv_root10G6.7G3.4G67//dev/mapper/vg_2g-lv_home5.0G4.3G784M85/home方法四:LinuxShell脚本监控分区磁盘空间使用和发送邮件#vi/opt/script/disk-usage-alert-2.sh#!/bin/bashused=$(df-Ph|grep'/dev/mapper/vg_2g-lv_dbs'|awk{'print$5'})max=80%if[${used%?}-ge${max%?}];thencho"$(hostname)上的挂载点"/DB"已在$(date)上使用$used"|mail-s"Diskspacealerton$(hostname):$usedused"[emailprotected]fi输出:我收到以下邮件警报。2g.CentOS6上的分区/dev/mapper/vg_2g-lv_dbs在IST2019年4月29日星期一06:16:14使用了82%终于添加了一个cronjob来自动执行这些作业。它将每10分钟运行一次。#crontab-e*/10****/bin/bash/opt/script/disk-usage-alert-2.sh注意:您将在10分钟后收到一封电子邮件警报,因为此脚本计划每10分钟运行一次(但不完全是10分钟,取决于时间)。比如这个例子。如果您的系统在8:25达到限制,您将在5分钟后收到一封电子邮件警告。希望现在清楚了。
