How to umount when the device is busy

It happens all the time doesn’t it?
You need to unmount a CD or you want to pack away the external drive but when you try to umount it you get the dreaded “device is busy” message.
Wouldn’t it be great if Linux actually told you what was keeping the drive busy?

# umount /media/disk/
umount: /media/disk: device is busy
umount: /media/disk: device is busy

First thing you’ll do will probably be to close down all your terminals and xterms but here’s a better way.
You can use the fuser command to find out which process was keeping the device busy:

# fuser -m /dev/sdc1/
dev/sdc1: 538
# ps auxw | grep 538
johnd 538 0.4 2.7 219212 56792 ? SLl Feb11 11:25 rhythmbox


Another handy one is:

umount -l /dev/sdc1

This does a lazy umount which immediately detaches the drive from the filesystem, and then cleans up everything afterwards.
This is especially handy if it’s a networked file system (NFS etc) and the network has gone down.


You can also use:

umount -lfr /mnt/sambamountofboxthatsshutdown

l for lazyness, f for forced unmount for unreachable networked storage, r for just in case unmounting fails remount as readonly