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