how to fix a ‘file in use’ problem

Sometimes when you try to eject a disk, unmount a volume or empty the Trash, you get caught out by some app or process that’s using the file and won’t release it. This is usually signalled by a warning dialog telling you the said file is “in use” or is “locked”.
Part of the difficulty of dealing with this problem is that the warning message may not actually tell you which process is hanging on to the file or give you any options on what to do next to solve the problem.
Sounds like a job for a quick bit of bash scripting then!
We’ll write a one-stop script that leverages a few different command line utilities to help us out here. First, our script will call fuser
to report the processes using the file. Then it’ll use ps
to get those processes’ ID numbers and, after asking us to confirm what we want to do, it’ll feed those to the kill
command to quit them and release the file.
The whole script is available here.
To use it, save the script as a plain text file in the root of your home folder (alternatively, save it in an /sbin
folder. You can do echo $PATH
on the command line to get a list of places you can save it to if you’re not sure).
Secondly, give it executable permissions with
chmod +x <script name>
When the problem strikes, jump into Terminal and type
./<script name>
Add a space, then type or drag the file from Finder onto the command line and hit ‘return’ if necessary. The script will do the rest.
In the image below, I first gave my script (named ‘releaseFile’) exec permissions. Then I called it and chose ‘a’ to quit all processes holding on to the file (in this case, only one process).

Hope that helps. Enjoy! 🙂
Posted on August 20, 2016, in Finder-2, Terminal, Trash-2 and tagged bash. Bookmark the permalink. Leave a comment.
Leave a comment
Comments 0