Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I tried to rm -rf a folder, and got "device or resource busy".

In Windows, I would have used LockHunter to resolve this. What's the linux equivalent? (Please give as answer a simple "unlock this" method, and not complete articles like this one. Although they're useful, I'm currently interested in just ASimpleMethodThatWorks™)

share|improve this question
Thanks this was handy - I was coming from Linux to Windows, was looking for the equivalent of lsof - LockHunter. – Sonia Hamilton Sep 4 '13 at 2:28
What the hell? Unix does not prevent you from deleting open files like Windows does. This is why you can delete your whole system by running rm -rf /... it will happily delete every single file, including /bin/rm. – psusi Oct 10 '14 at 15:35
@psusi, that is incorrect. You either have a bad source of information or are just making stuff up. Linux, like Windows, has file and device locking. It's kind of broken, though. 0pointer.de/blog/projects/locking.html – foobarbecue Jan 10 '15 at 1:05
@foobarbecue, normally those are only advisory locks and the man page at least seems to indicate they are only for read/write, not unlink. – psusi Jan 10 '15 at 23:34
up vote 83 down vote accepted

The tool you want is lsof, which stands for list open files.

It has a lot of options, so check the man page, but if you want to see all open files under a directory:

lsof +D /path

That will recurse through the filesystem under /path, so beware doing it on large directory trees.

Once you know which processes have files open, you can exit those apps, or kill them with the kill(1) command.

share|improve this answer
What if there were no results? – marines Feb 4 '14 at 15:04
@marines: Check if another filesystem is mounted beneath /path. That is one cause of hidden "open files". – camh Feb 5 '14 at 9:16
lsof command directly to the path does not work. So basically need to go in the path location and then run lsof busy_file then kill all the process – J4cK Jul 4 at 11:56

sometimes it's the result of mounting issues, so I'd unmount the filesystem or directory you're trying to remove:

umount /path

share|improve this answer
It's a quarter to four. Thanks man, you saved my night. Hilarious. On single line - so much wasted time -.-' – Aiyion.Prime Jun 23 '15 at 1:48
my problem was a log directory mounted as /dev/mapper/vg00-root – Spikolynn Dec 27 '15 at 21:56
Helped me get out of a similar jam on winders. – Jon May 9 at 17:44

I use fuser for this kind of thing. It will list which process is using a file or files within a mount.

share|improve this answer
fuser helps only in the specific case when you want to unmount a filesystem. Here the problem is to find what's using a specific file. – Gilles Apr 13 '11 at 19:09
@Gilles: Also works for files. – BillThor Apr 14 '11 at 0:36
Sorry, wrong objection: fuser doesn't help here because the problem is to find all the open files in a directory tree. You can tell lsof to show all files and filter, or make it recurse; fuser has no such mode and needs to be invoked on every file. – Gilles Apr 14 '11 at 7:57
@Giles: fuser works will lists. Try fuser /var/log/*, if any logs are open it will tell which ones and who has it open. If a simple wildcard, won't work, find with or without xargs will do the job. – BillThor Apr 14 '11 at 17:23
lsof was not in my path while fuser was, allowing me to find the offending process ID to kill, so +1+thanks. – stevesliva Oct 13 '15 at 19:48

Here is the solution:

  1. Go into the directory and type ls -a
  2. You will find a .xyz file
  3. vi .xyz and look into what is the content of the file
  4. ps -ef | grep username
  5. You will see the .xyz content in the 8th column (last row)
  6. kill -9 job_ids - where job_ids is the value of the 2nd column of corresponding error caused content in the 8th column
  7. Now try to delete the folder or file.
share|improve this answer
It would be interesting to know where those mysterious files are coming from. – John WH Smith Aug 12 '14 at 20:59

I had this same issue, built a one-liner starting with @camh recommendation:

lsof +D log/ | awk '{print $2}' | tail -n +2 | xargs kill -9

The awk command grabs the PIDS. The tail command gets rid of the pesky first entry: "PID". I used -9 on kill, others might have safer options.

share|improve this answer

I know this is an old question, but it might help somebody with the same issue.

When you are using a file somewhere else (for instance in a different tab), removing the folder containing that file results in the Device or resource busy-error.

You can get over this error by simply exiting the program that's using the file.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.