Einführung:
Hin und wieder, wenn ein NFS-Mount nicht mehr mit dem Server verbunden ist oder etwas mit der NFS-Verbindung schief geht, hängt das Terminal beim Ausführen des Befehls „ls mountpoint“, bis ich STRG-C drücke. Also habe ich versucht, ein Skript zu finden, das als Cron-Job ausgeführt wird und mir mitteilt, wenn ein NFS-Mount schief gelaufen ist. Ich musste auf unorthodoxe Tricks zurückgreifen, da das Ausführen eines einfachen Befehls „stat mountpoint &“ innerhalb des Skripts auch das Skript aufhängen würde. Also verwende ich den Befehl „at now“, der den Befehl unabhängig für das Skript ausführt, das ihn initiiert hat. Hier ist ein Beispiel für ein solches Skript.
#!/bin/bash
# Name: MOUNT_CHECK.sh
# Purpose: Checks the health of the NFS mountpoint given by argument
# it kills the at/stat process and exits with an exit code 2 if the timeout has expired.
#-------------------------------------------------------------------
startdelay=3
timeout=10
# processes to be excluded in the 'ps | grep' test
excludes="openvpn|istatd|rpc.statd"
if [ $# -ne 1 ]; then
echo "ERROR: Needs mountpoint as argument"
echo "Usage: MOUNT_CHECK.sh MountPoint"
exit 2
fi
#
echo "/usr/bin/stat $1" | /usr/bin/at now
sleep $startdelay
while (ps ax | egrep -v "grep|$excludes" | grep -q stat); do
let count=${count}+1
sleep 1
if [ $count -ge $timeout ]; then
kill $(pidof stat)
#echo "Mountpoint $1 : FAILED to connect before timeout of $timeout sec."
exit 2
fi
done