Suchen Sie unter Linux nach freiem Speicherplatz und senden Sie eine E-Mail, wenn dies kritisch ist

2

Ich habe gerade die Arbeit mit einem Server beendet, auf dem nicht mehr genügend Speicherplatz vorhanden ist, und möchte die Überwachung jetzt darauf einrichten, um zu verhindern, dass er in Zukunft kritisch wird.

Ich möchte, dass eine E-Mail an das rootKonto gesendet wird (das an meine Arbeits-E-Mail weiterleitet), wenn der freie Speicherplatz unter xx% liegt, wobei er konfigurierbar ist.

Ich weiß, dass ich den df -hBefehl verwenden kann, um das für Menschen lesbare Textlayout abzurufen, aber ich möchte nicht jeden Tag einen Bericht. Ich möchte nur dann einen Bericht erhalten, wenn bestimmte Partitionen / Mount-Punkte voll sind und weniger als ein bestimmter Prozentsatz noch frei ist.

Ich fühle mich wohl mit Skripten, aber ich weiß nicht, wie ich das anstellen soll. Unten finden Sie eine Beispielausgabe des Befehls, den ich sowieso manuell ausführe:

# df -h
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                   74G  6.4G   64G  10% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   387M  320K  387M   1% /run
/dev/disk/by-uuid/615e2eca-0e01-4f3f-99d3-5a0560a78f9a   74G  6.4G   64G  10% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   773M     0  773M   0% /run/shm
/dev/md0                                                939M   51M  841M   6% /boot
/dev/md3                                                844G  535G  266G  67% /images
/dev/md2                                                2.7T  1.7T  955G  64% /var
Kanadischer Luke
quelle

Antworten:

3

Das sollte dich zum Laufen bringen:

#!/bin/sh

MOUNTPOINTS="/ /home"
THRESHOLD=90

for MOUNT in ${MOUNTPOINTS}; do

  CURRENT=$(df ${MOUNT} | grep / | awk '{ print $5}' | sed 's/%//g')

  if [ "${CURRENT}" -gt "${THRESHOLD}" ] ; then
    mail -s 'Disk Space Alert' root << EOF

Your ${MOUNT} partition remaining free space is critically low. Used: ${CURRENT}%
EOF

  fi

done

Dies basiert auf Code von Malik Arjun .

jáquer
quelle
Oder: MOUNTPOINTS=$(df | tail -n +2 | sort -k 6 | uniq -f 2 | awk ‘{ print $6 }’)Wenn Sie alle Mount-Punkte wollen ... (
Angeberei
Ich habe es leicht optimiert, im Grunde die Nachricht an stdoutausgegeben und Cron verwendet, um sie auszuführen (was nur E-Mails betrifft, wenn sie ausgegeben werden). Gute Entdeckung
Kanadier Luke