Sometime a filesystem has to be un-mounted and it cannot, because it's busy. This script shows what processes are using it. And once you know this, you can probably kill processes, if it's okay, un-mount the filesystem.
#!/bin/sh #set -x programname=`/usr/bin/basename $0` usage() { echo "Usage: ${programname} filesystem" ; exit 1 } # --- check if there is argument (filesystem) [ $# != 1 ] && usage # -- also check if argument is filesystem, maybe it's just directory argument=`df $1 | awk '{print $1}'` if [ ${argument} != $1 ]; then echo "Argument must be filesystem, and no trailing /" ; exit 2 fi # find number of processes using filesystem number_of_processes=`fuser -cu $1 2>/dev/null | wc -w` # get list of those processes list_of_processes=`fuser -cu $1 2>/dev/null` # --- maybe filesystem is not busy if [ ${number_of_processes} -eq 0 ]; then echo "The filesysetm $1 is not busy" ; exit 0 fi echo "The filesystem $1 is busy because ${number_of_processes} process(es) are using it!" echo " UID PID PPID C STIME TTY TIME CMD" for process in ${list_of_processes} do echo "`ps -fp ${process} | tail -1`" done exit 0 |