Every so often it takes a little know-how to empty the Trash or eject a CD; learn when and how.
There are times, rare as they may be, when OS X goes a little haywire and simply won't spit out a CD or DVD, unmount a disk image, or empty the Trash. Often things have a way of sorting themselves with a little patience, with a Finder restart, by logging out and back in, or (heaven forbid) by rebooting your Mac. Sometimes, however, that stuck CD/DVD or image doesn't budge or the Trash simply refuses to empty.
It does the heart good to do some occasional housekeeping. One such activity is emptying the Trash folder to free up more disk space for your Mac. This is usually as simple as Finder Empty Trash . . . or -Shift-Delete. Every so often, though, a file or folder refuses to leave.
First a little background on the mystical Trash can. Every file you delete is moved into a folder called .Trash in your home directory:
% ls -al total 48 drwxr-xr-x 20 weimengl staff 680 Dec 14 12:35 . drwxrwxr-t 8 root wheel 272 Dec 10 09:30 .. drwx------ 6 weimengl staff 204 Dec 14 12:55 .Trash ...
To dip into the Trash, simply open a Terminal [Hack #48] window, navigate to the .Trash directory, and list files:
% cd .Trash % ls -al
Emptying the Trash is nothing more than deleting all the contents of your .Trash folder.
Despite having been placed into the Trash, a file may still be in use by an application (see Figure 1-17).
The remedy is to guess which application is using it and close the file or shut down the application if you're no longer using it. Try emptying the Trash again and, assuming that was the problem, it should empty without incident.
If you aren't able to figure out what application is using the file and have shut down just about anything you can find, launch the Terminal and use the fstat (file status) command to ascertain which is the offending program:
% fstat .Trash/file1 USER CMD PID FD INUM MODE SZ|DV R/W MOUNT NAME weimengl LaunchCFMA 2070 30 347708 -rw-r--r-- 31974 rw / .Trash/file1
Notice the PID (process ID) of the application holding the file hostage. Let's see what application that corresponds to by using the ps (process status) command. The -p 2070 argument specifies the process ID, and -w displays the first 132 characters of the process name rather than just as much as can fit on one Terminal line.
% ps -wp 2070 PID TT STAT TIME COMMAND 2070 ?? S 23:47.77 /Applications/Microsoft Office X/Microsoft Word / Applications/Microsoft Office X/Microsoft Word -psn_0_18
There we are! It's Microsoft Word. Get it to release the file and try emptying the Trash again.
Another problem that crops up occasionally is locked files [Hack #7] in the Trash. While you shouldn't be able to put a locked file into the Trash in the first place, sometimes one sneaks by. Look in your Trash folder via the Finder and see if the offending file is locked (the icon is overlaid by a small lock), as shown in Figure 1-18.
To unlock the file, select File Get Info or press -I for the File Info inspector (see Figure 1-19). If the Locked checkbox is checked, click it to unlock the file.
If the file refuses to unlock, try one of the techniques covered in [Hack #7].
Another possibility is that a file in your Trash may not belong to you. You'll need to alter the permissions or take ownership [Hack #49] of the file before you're able to empty it from the Trash.
It's still there and refusing to budge? Try simply removing the offending file(s) using the rm [Hack #48] command, like so:
% rm ~/.Trash/file1
If that has no effect, or if OS X complains about something else, force it with the -f option:
% rm -f ~/.Trash/file1
If there's a whole hierarchy of folders and files causing you trouble, you can recursively delete all the files in your Trash using sudo to get around permissions issues, -i to ask for confirmation before deleting each, and -r to recurse through the hierarchy:
% sudo rm -ri ~/.Trash/* remove /Users/weimengl/.Trash/file1? y
You've pressed -E and dragged that mounted disk image to the Trash until you're blue in the face, but still it won't disappear. No complaints, no errors, nothing; it simply ignores your every attempt to eject it.
This is usually one of those situations best cleaned up by a logging out and back in, relaunching the Finder, or rebooting. It's safer and less likely to mangle the data on the disk image if you avoid resorting to brute force tactics.
CD/DVD loading and unloading on all recent Macintoshes are done through the operating system rather than the physical eject buttons you usually find on other systems. Windows users are often caught looking nervously about for the CD eject button ? I have to admit I've done so myself. What to do if that CD/DVD gets stuck?
Your first course of action is to pull out your handy-dandy paper clip, the tool of choice for the Mac generation. Oh, you don't have one? Shame on you! All right, so there's actually another way to do it that will work, just so long as there's nothing physically wrong with the drive that's keeping it from ejecting your CD/DVD. Launch the Terminal and use the df command to find the filesystem ID of your CD/DVD:
% df -l Filesystem 512-blocks Used Avail Capacity Mounted on /dev/disk0s9 120091280 31348032 88231248 26% / fdesc 2 2 0 100% /dev /dev/disk1s1s2 614256 478912 135344 77% /Volumes/A CD
In my case, the CD is mounted as disk1s1s2. To eject the CD, use the disktool utility, handing it the filesystem ID:
% disktool -e disk1s1s2 disk1s1s2 device will attempt to be ejected ... ***Notifications Complete for type 1 ***Disk Unmounted('disk1') ***Disk Unmounted('disk1s1s1') ***Disk Unmounted('disk1s1') ***Responding yes to unmount - disk1s1s2 ***Disk Unmounted('disk1s1s2') ***Responding yes to eject - disk1 ***Responding yes to eject - disk1s1s1 ***Responding yes to eject - disk1s1s2 ***Responding yes to eject - disk1s1 ***Disk Ejected('disk1') ***Disk Ejected('disk1s1s1') ***Disk Ejected('disk1s1s2')
Your CD/DVD should pop right out.
?Wei-Meng Lee and Rael Dornfest