Automatically solve rm cannot remove path : device or resource busy error

45k views Asked by At

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?

3

There are 3 answers

0
Hayden On

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

0
Ali On

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

umount /path

credit

1
sbrunner On

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