يراقب هذا السكربت المساحة على الأقراص حتى لا تفاجأ بامتلاء أحد الأقسام. يستخدم الأمر df -P للحصول على مخرجات نظيفة بسطر واحد لكل نظام ملفات، ثم يمر على كل قسم ويستخرج عمود نسبة الاستخدام «Use%»، ويحذف علامة النسبة المئوية ليتمكن من المقارنة الرقمية. يجري تجاهل أنظمة الملفات الوهمية والشبكية مثل tmpfs وoverlay وsquashfs لأن أرقام استخدامها لا تفيد في تخطيط السعة. أي قسم يتجاوز العتبة (85% افتراضياً) يُضاف إلى نص التنبيه مع نقطة التركيب والمساحة المستخدمة والإجمالية. وإذا كان النص غير فارغ، يمرّر السكربت رسالة منسّقة إلى الأمر mail ويرسلها إلى العنوان المحدد. جميع القيم قابلة للتعديل عبر متغيرات البيئة، مما يسهّل استخدامه على عدة خوادم. جدوِله عبر cron كل خمس عشرة دقيقة للحصول على مراقبة مستمرة ومنخفضة الكلفة دون أدوات خارجية.
تنبيه تجاوز عتبة استخدام القرص
يرسل بريداً إلكترونياً للمسؤول عند تجاوز أي قسم مثبّت لنسبة استخدام محددة.
1 مشاهدة
مشاركة
السكربت
تحميل .shbash
#!/usr/bin/env bash
#
# disk_usage_alert.sh
# Sends an email when any mounted filesystem exceeds a usage threshold.
# Designed to be run from cron, e.g.: */15 * * * * /opt/scripts/disk_usage_alert.sh
#
set -euo pipefail
# ---- Configuration -----------------------------------------------------------
THRESHOLD="${THRESHOLD:-85}" # Alert when usage % is greater than this.
ALERT_EMAIL="${ALERT_EMAIL:-root@localhost}"
HOSTNAME_FQDN="$(hostname -f 2>/dev/null || hostname)"
# Filesystem types to skip (pseudo / network filesystems).
EXCLUDE_FS="tmpfs|devtmpfs|squashfs|overlay|udf|iso9660"
# ---- Collect filesystems over the threshold ----------------------------------
# df -P -> POSIX output (one line per FS, no wrapping).
# We parse the "Use%" column and strip the trailing '%'.
alert_body=""
while read -r filesystem size used avail usep mount; do
use_pct="${usep%\%}" # Remove the '%' sign.
# Skip the header row and any non-numeric value.
[[ "$use_pct" =~ ^[0-9]+$ ]] || continue
if (( use_pct > THRESHOLD )); then
alert_body+="${mount} (${filesystem}) is at ${use_pct}% used [${used}/${size}]"$'\n'
fi
done < <(df -P -x tmpfs -x devtmpfs 2>/dev/null | grep -vE "${EXCLUDE_FS}")
# ---- Notify if there is anything to report -----------------------------------
if [[ -n "${alert_body}" ]]; then
subject="[DISK ALERT] ${HOSTNAME_FQDN}: filesystem over ${THRESHOLD}%"
{
echo "Disk usage threshold (${THRESHOLD}%) exceeded on ${HOSTNAME_FQDN}:"
echo
echo "${alert_body}"
echo "Checked at: $(date '+%Y-%m-%d %H:%M:%S %Z')"
} | mail -s "${subject}" "${ALERT_EMAIL}"
echo "Alert sent to ${ALERT_EMAIL}."
else
echo "OK: all filesystems are below ${THRESHOLD}%."
fiكيفية التشغيل
راجع السكربت أولاً، ثم حمّله أو انسخه وشغّله في بيئتك.
قد يعجبك أيضاً
bashlinuxمتوسط
تنبيه متوسط حمل المعالج
ينبّه عبر البريد عند تجاوز متوسط الحمل لكل نواة معالج نسبةً محددة.
bashlinuxمبتدئ
عرض نسخ الحوسبة في GCP
إظهار كل آلة افتراضية في Compute Engine ضمن مشروع مع المنطقة ونوع الآلة والحالة وعناوين IP.
pythoncross-platformمتوسط
حاسبة موعد التشغيل التالي لتعبير cron
عند إعطاء تعبير cron يطبع المواعيد التالية لتشغيله مع العد التنازلي لكل منها.