Introducción:
De vez en cuando, si un montaje NFS ya no está conectado al servidor o si algo sale mal con la conexión NFS, ejecutar el comando 'ls mountpoint' bloquea el terminal hasta que presiono CTRL-C. Así que traté de encontrar una secuencia de comandos que se ejecutará como un trabajo cron y me dirá cuándo un montaje NFS salió mal. Tuve que volver a los trucos poco ortodoxos ya que hacer un comando simple 'stat mountpoint &' dentro del script también colgaría el script. Así que uso el comando 'ahora' que ejecuta el comando de forma independiente para el script que lo inició. Aquí hay un ejemplo de dicho 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