6

I am trying to remove a directory /path/to/dir using the rm -rf command. Unfortunately I get the error

rm: cannot remove '/path/to/dir/.nfsdda293a660f276ca0000000a': Device or resource busy

After a little bit of research, I realized that I need to find which process is using this file before I can delete it:

lsof /path/to/dir/.nfsdda293a660f276ca0000000a

which will return something with the PID associated with the process:

COMMAND   PID
python    28594

I then kill the PID and try again to delete, but I still get the initial error.

How to force the script to delete /path/to/dir automatically within a script, without manual intervention?

JejeBelfort
  • 1,593
  • 2
  • 18
  • 39
  • 1
    Do in the script exactly what you do manually. Capture the output of `lsof` to get the PID to kill and kill it the same method as you would manually. – Nic3500 Apr 24 '22 at 23:15

3 Answers3

5

This worked for me:

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.

Credit: https://unix.stackexchange.com/questions/11238/how-to-get-over-device-or-resource-busy

Hayden
  • 51
  • 2
1

With so many complicated answers on here which is confusing everybody, please just do the following.

umount directoryname

then try again e.g.

rm -rf directoryname
desertnaut
  • 57,590
  • 26
  • 140
  • 166
sbrunner
  • 11
  • 2
0

In case the @Hayden answer didn't help you (returns nothing or such), this command can be handy:

umount /path

credit

Ali
  • 922
  • 1
  • 9
  • 24