Présentation :
De temps en temps, si un montage NFS n'est plus connecté au serveur ou si quelque chose ne va pas avec la connexion NFS, l'exécution de la commande "ls mountpoint" bloque le terminal jusqu'à ce que j'appuie sur CTRL-C. J'ai donc essayé de trouver un script qui sera exécuté en tant que tâche cron et qui me dira quand un montage NFS a mal tourné. J'ai dû revenir à des astuces peu orthodoxes car faire une simple commande 'stat mountpoint &' dans le script bloquerait également le script. J'utilise donc la commande 'at now' qui exécute la commande indépendamment du script qui l'a lancée. Voici un exemple d'un tel script.
#!/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