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 with 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 programs 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 programs 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. You still get the "device is busy" message eventhough no program is using the device.
When you have made sure, that all programs accessing the device has been terminated, you can use the fuser command to force an unmount and possible killing any frozen processes.
# fuser -uz /media/cdrom/
-z option kills the process involved. Sometimes you need to run the command more than once.
On Debian the
fuser program comes with the
psmisc package, and you can install that using:
# apt-get install psmisc
psmisc provides some utilities that use the proc filesystem.
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/