In my home depot I share files to laptops using NFS over a VPN network. Typically the shutdown process hangs as there appears to be processes using the mounted NFS filesystem no matter whatever orders I give to the shutdown scripts. After getting tired of debugging the shutdown process I decided to write a pre-shutdown script that kills all processes with open files in the NFS fs.
The local fileserver is called “harkko”.
#!/bin/bash
function lsof_kill {
MOUNT=$1
for THIS_PID in $(lsof 2>/dev/null | grep -i "${MOUNT}" | awk '{print $2}')
do
kill -KILL ${THIS_PID}
done
}
echo "Killing processes with open files at mounted NFS filesystems..."
# Kill all processes with open files at /mnt/harkko
lsof_kill /mnt/harkko
# Kill all processes with open files at /mnt/huge
lsof_kill /mnt/huge
# Kill all processes with open files at /mnt/canister
lsof_kill /mnt/canister
echo "...done"
echo "Executing harkko_umount"
harkko_umount
echo "Stopping harkko VPN"
/etc/init.d/openvpn stop harkko
echo "Executing poweroff"
poweroff