Maison > Tutoriel système > Linux > le corps du texte

Linux - Script Shell pour surveiller automatiquement l'utilisation du disque

PHPz
Libérer: 2024-02-14 22:18:03
avant
650 Les gens l'ont consulté

如果您在服务器上运行关键任务,那么监控磁盘使用情况并在达到阈值时通知管理员是非常重要的。本文将介绍如何编写一个脚本来自动监控磁盘使用情况,并在达到阈值时将报告发送到您的邮箱。

在本文中,我们将编写一个 shell 脚本,在 crontab 中指定固定时间间隔监控磁盘使用情况,并在报告达到指定阈值时通过电子邮件发送报告。

首先,需要确保系统安装了 mail 命令和 postfix 发送邮件服务。下面是在 Centos8 中安装这些工具的命令:

[root@localhost ~]# yum -y install mailx postfix
[root@localhost ~]# systemctl enable --now postfix
Copier après la connexion

下面使用mail命令发送邮件测试:

[root@localhost ~]# echo "This message will go into the body of the mail." | mail -s "Testing from the server." root@localhos
Copier après la connexion
Linux —— 用于自动监控磁盘使用情况的 Shell 脚本

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

测试磁盘使用情况的脚本

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

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

MAILID="admin@linuxprobe.com"

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
Copier après la connexion

监控脚本说明

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

环境变量MAILID保存必须在其中发送报告的邮箱地址。

VALUE 保存要设置的阈值。

SERVERNAME 保存服务器的主机名,用于电子邮件通知中的服务器标识。

使用 for 循环,它将遍历所有具有“/dev”挂载点的文件系统。然后它将文件系统名称和磁盘使用百分比保存到两个变量FILESYSTEMDISK_USAGE

使用上述变量,磁盘使用量等于阈值 VALUE 变量。根据结果,将向指定的邮箱发送一封电子邮件。

监控脚本执行

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

[root@localhost ~]# chmod +x disk-monitor.s
Copier après la connexion

使用下面方式运行脚本:

[root@localhost ~]# ./disk-monitor.s
Copier après la connexion

自动化监控过程

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

使用下面方式打开crontab:

[root@localhost ~]# crontab -
Copier après la connexion

将下面内容添加到配置文件中:

*/5 * * * * sh /home/ec2-user/disk-monitor.sh
Copier après la connexion
Linux —— 用于自动监控磁盘使用情况的 Shell 脚本

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:lxlinux.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!