Redian新闻
>
Linux —— 用于自动监控磁盘使用情况的 Shell 脚本

Linux —— 用于自动监控磁盘使用情况的 Shell 脚本

科技

如果在服务器上运行关键任务,那么监控和通知管理员磁盘使用情况很重要。本文介绍编写一个脚本来自动监控并在达到阈值时将报告发送到自己的邮箱。
在文章中,我们写一个 shell 脚本,它在 crontab 中指定固定时间间隔监控磁盘使用情况,并在报告达到指定的阈值时通过电子邮件发送报告。
首先,需要确保系统安装了mail命令postfix发送邮件服务。下面是在Centos8中安装的命令
[root@localhost ~]# yum -y install mailx postfix
[root@localhost ~]# systemctl enable --now postfix
下面使用mail命令发送邮件测试:
[root@localhost ~]# echo "This message will go into the body of the mail." | mail -s "Testing from the server." root@localhos


本文不讲解如何配置smtp服务。



测试磁盘使用情况的脚本



以下是测试磁盘使用情况并将报告发送到指定邮箱的脚本。脚本的解释在代码片段之后给出。

[root@localhost ~]# vim  disk-monitor.sh
#!/bin/bash

MAILID="[email protected]"

VALUE=80

SERVERNAME=$(hostname)

MAIL=/bin/mail

for line in $(df -hP | egrep '^/dev/' | awk '{ print $1 "_:_" $5 }')
  do
    FILESYSTEM=$(echo "$line" | awk -F"_:_" '{ print $1 }')
    DISK_USAGE=$(echo "$line" | awk -F"_:_" '{ print $2 }' | cut -d'%' -f1 )

    if [ $DISK_USAGE -ge $VALUE ];
    then
      EMAIL="$SERVERNAME - $(date): $FILESYSTEM Exceeded the threshold VALUE\n"
      EMAIL="$EMAIL\n Usage Details\n Current Usage:($DISK_USAGE%) Threshold value: ($VALUE%)"
      echo -e "$EMAIL" | $MAIL -s ""$SERVERNAME" Disk Usage Alert: Needs Attention!" "$MAILID"
    elif [ $DISK_USAGE -lt $VALUE ];
    then
      EMAIL="$EMAIL\n$FILESYSTEM ($DISK_USAGE%) is lessthan the threshold ($VALUE%)"
      EMAIL="$EMAIL\n"
      echo -e "$EMAIL" | $MAIL -s ""$SERVERNAME" Disk Usage Alert: Threshold Not Reached" "$MAILID"
  fi
done



监控脚本说明



上述脚本使用df -hP命令获取内存信息。

环境变量MAILID保存必须在其中发送报告的邮箱地址。
VALUE 保存要设置的阈值。
SERVERNAME 保存服务器的主机名,用于电子邮件通知中的服务器标识。
使用 for 循环,它将遍历所有具有“/dev”挂载点的文件系统。然后它将文件系统名称和磁盘使用百分比保存到两个变量FILESYSTEM 和 DISK_USAGE
使用上述变量,磁盘使用量等于阈值 VALUE 变量。根据结果,将向指定的邮箱发送一封电子邮件。



监控脚本执行



下面需要修改一下disk-monitor.sh脚本的权限,为它添加可执行权限:

[root@localhost ~]# chmod +x disk-monitor.s
使用下面方式运行脚本:
[root@localhost ~]# ./disk-monitor.s



自动化监控过程



手动运行脚本没有任何意义,因为我们希望自动运行该过程。自动运行该过程的最佳方法是将脚本添加到 crontab配置文件中。

使用下面方式打开crontab:
[root@localhost ~]# crontab -
将下面内容添加到配置文件中: <pre< style="box-sizing: border-box;">*/5 * * * * sh /home/ec2-user/disk-monitor.sh</pre<>

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604241

Linux技术交流群:2261840

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
辉瑞新冠口服药陷复阳危机,预防无效,国内使用情况如何?移动版 GNOME Shell:希望之始,期望满满 | Linux 中国开始冒充巴黎人Linux Mint 接管 Timeshift 备份工具的开发,并作为一款 XApp 来维护 | Linux 中国Nushell: 一个让你更清楚地了解错误信息的跨平台 Shell | Linux 中国传统的力量 信仰的颠覆(三十四)Linux Lite 6.0 发布:弃用 Firefox,默认浏览器使用 Chrome | Linux 中国Archinstall 新的菜单系统让安装 Arch Linux 更容易了 | Linux 中国如何在 Linux 桌面中启用 “激活 Linux” 水印通知 | Linux 中国使用 apt 进行 Linux 包管理 | Linux 中国上一个说“丼”不读jǐng的人,已经被我骂哭了检查 Linux 磁盘使用情况 | Linux 中国谁能理解普京?如何从 Windows 上用 SSH 连接到 Linux | Linux 中国在 Linux 上使用 Rhythbox 听音乐 | Linux 中国时间和财富,都到哪里去了。。。Collision:用于验证 ISO 和其他文件的 Linux 应用 | Linux 中国使用自动化时的五个常见错误 | Linux 中国我是如何使用 Linux fmt 命令来格式化文本 | Linux 中国分享 8 篇使用 Linux 命令行的技巧 | Linux 中国用 nftwatch 监控你的 Linux 防火墙 | Linux 中国使用 Linux 上的开源财务工具 Skrooge 管理你的预算 | Linux 中国如何清理 Snap 保留的旧软件包以释放磁盘空间 | Linux 中国使用 Podman 运行一个 “hello world” MLCube | Linux 中国如何在 Linux 中使用 Pandoc 转换文件格式 | Linux 中国如何从源码编译 GNOME Shell 和应用 | Linux 中国使用 watch 和 tail 命令监视 Linux 上的活动 | Linux 中国在 Linux 上使用 Bash 创建一个临时文件 | Linux 中国使用 dnf 进行 Linux 包管理 | Linux 中国拜登再次阳性!辉瑞口服药陷复发危机,国内使用情况如何?在 Linux 中使用组合键输入隐藏的字形 | Linux 中国爱人英伟达在提升 Linux 上的 GPU 使用体验上迈出了一大步 | Linux 中国我如何在 Linux 上扫描家庭照片 | Linux 中国在 Linux 上使用 sudo 命令的 5 个理由 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。