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 /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
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/
-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.
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/
If you have any comments or corrections please feel free to email them to me. Also, if you found this content useful consider supporting me on Patreon