umount - device is busy

Posted on 2010-01-12.
Have you ever tried to unmount a partition only to get the message "device is busy"? Well, there's a reason for that and here's what you can do.

When you receive the message "device is busy" it's because some program or programs are using the device.

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

You need to find out what programs are accessing the device, and you can do that using the lsof command:

# lsof /media/cdrom/
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
bash     3279 knl   cwd    DIR   0,19     8192 805939346 /media/cdrom/pdf (/dev/cdrom)
xpdf.bin 3337 knl   cwd    DIR   0,19     8192 805939346 /media/cdrom/pdf (/dev/cdrom)
xpdf.bin 3337 knl    4r    REG   0,19  2114081   1760652 /media/cdrom/pdf/Emacs_Tutorial.pdf (/dev/cdrom)

In this case it shows that the bash and xpdf are using the device, and that xpdf has opened a file called Emacs_Tutorial.pdf in the pdf directory.

You need to close these applications and exit the device in order to unmount it.

Sometimes a mounted device can freeze up, and it gets impossible to unmount it using the umount command. Then you still get the "device is busy" message even though no program is using the device. When you have made sure that all applications accessing the device has been terminated you can use the -l option to umount and force an unmount.

# umount -l /media/cdrom/

The -l option stands for "Lazy unmount" and it detach the filesystem from the file hierarchy immediately, and then clean up all references to the filesystem as soon as it is not busy anymore.

Using lsof on the device name rather than mountpoint can sometimes provide more information. If your cdrom drive is /dev/sdb1 you can use # lsof /dev/sdb1 rather than # lsof /media/cdrom/