Tipps & Tricks zu digitaler Medienproduktion, Netzwerken und Servertechnologien
   


back to homepage

Thematisch:

Chronologisch:

Alles als PDF

Durchsuchen:

      

kaiser-edv.de » Tipps & Tricks » MacOS » dateisystem-fuellstand-pruefen.html

Tipp: [MacOS X] Dateisystemfüllstand überwachen     (07. Juni 2004 — tk)

Wenn große Lösungen à la »Big Sister« und Konsorten ausscheiden oder zu umfangreich sind, dann lohnt es sich trotzdem, auf unbeaufsichtigt laufenden Macs einen Benachrichtigungsmechanismus einzusetzen, der vor überlaufenden Dateisystemen warnt.

Das folgende kleine Skript erledigt genau das (funktioniert unter MacOS X sowohl von 10.0 - 10.2 mit dem eingebauten sendmail als auch unter 10.3 aufwärts ohne Änderung per postfix).

Ein simples Anpassen der Variablen ${Sender} und ${Receiver}, Abspeichern als bspw. /usr/local/bin/warn-when-fs-full.sh und ein Aktivieren des lokalen MTA (Mail Transfer Agent) — bei 10.3 simpel dadurch zu erreichen, indem ein einziges mal im Druckdialog der Fax-Button angeklickt wird — und das Skript ist bereits funktionsfähig.

Periodisch aktiv wird es bspw., indem man an eines der cronjob-Skripte, bspw. das nächtlich aufgerufene /private/etc/periodic/daily/500.daily eine passende Zeile anhängt:

/usr/local/bin/warn-when-fs-full.sh 80

Das sorgt in Zukunft dafür, daß Dateisysteme, die zu mehr als 80% belegt sind, per E-Mail gemeldet werden.

Skriptsource:

#!/bin/sh
# 
#######################################################################
#
# Copyright (c) 2004, Thomas Kaiser
# license: http://www.opensource.org/licenses/bsd-license.php
# 
#######################################################################
#
# Description: 
#
# Small script intended to report local filesystems exceeding a certain 
# amount of used space -- to be defined either as ${DefaultPercentage}
# variable or as parameter on the command line.
#
# Use it for example in your crontab (adding a line to the scripts in
# /private/etc/periodic/ respectively)
#
# Attention: Don't forget to adjust both ${Sender} and ${Receiver} to
# fit your needs.
#
#######################################################################
#
# Non-Warranty: 
# This script comes with absolutely no warranty. Use at your own risk!
#
#######################################################################
 
# Adjust settings here!
 
DefaultPercentage=90
Sender=me@privacy.net
Receiver=me@privacy.net
 
# Use the default unless a specific value will be supplied
 
MaxPercent=${1:-${DefaultPercentage}}
 
Main() {
    MailBody=$(CheckFileSystems)
    if [ "X${MailBody}" != "X" ]; then
        SendMail "${MailBody}"
    fi
} # Main
 
CheckFileSystems() {
df | grep "^/dev" | while read -r fs ; do 
    fuellstand=$(echo ${fs} | awk -F" " '{print $5}' | tr -d '%')
    if [ ${fuellstand} -ge ${MaxPercent} ]; then 
        echo ${fs} | awk -F" " '{print $6" zu \303\274ber "$5" voll"}'
    fi
done
} # CheckFileSystems
 
SendMail() {
sendmail -f${Sender} -i -t <<-End-OF-Mail
Return-path: <${Sender}>
User-Agent: sendmail
Subject: Dateisystem voll auf $(hostname)
From: $(hostname) <${Sender}>
To: <${Receiver}>
Mime-version: 1.0
Content-type: text/plain; charset="UTF-8"
Content-transfer-encoding: 8bit
 
$(echo -e $1)
End-OF-Mail
 
if [ "X${TERM}" != "XDUMB" ]; then
    echo "Notification sent to \"${Receiver}\""
fi
} # SendMail
 
Main


Im Artikel referenzierte URLs:


Copyright © Thomas Kaiser, 2004 (erstellt am Montag, 07. Juni 2004)

Dieser Beitrag kann durch jedermann gemäß den Bestimmungen der Lizenz für die freie Nutzung unveränderter Inhalte genutzt werden. Die Lizenzbedingungen können unter http://www.uvm.nrw.de/opencontent abgerufen oder bei der Geschäftsstelle des Kompetenznetzwerkes Universitätsverbund MultiMedia NRW, Universitätsstraße 11, D-58097 Hagen, schriftlich angefordert werden.