rm:无法删除 '': 设备或资源繁忙

rm:无法删除 '': 设备或资源繁忙

我知道可能会有很多重复项。我已经经历了几乎所有这些(如 lsof、fuser 等),但无法解决。

rm:无法删除“temp_p/sys”:设备或资源繁忙

这是我在尝试从 bash 脚本中删除文件夹时收到的错误。我使用的命令是:

test -f "$TEMP_DIR" && sudo rm -rf "$TEMP_DIR"

我尝试从 shell 执行 rm -rf,它显示相同的输出。 lsof 的输出是:

lsof +D <directory name>

lsof: 警告: 无法 stat() fusion.gvfsd-fuse 文件系统 /run/user/76585/gvfs 输出信息可能不完整。 lsof: 警告: 无法 stat() vfat 文件系统 /media/kostef1/9016-4EF8 输出信息可能不完整。

Fuser 也没有显示任何内容。如果我列出所有隐藏文件,它仍然不会显示任何以点开头的内容。

答案1

它表明temp_p/sys上面安装了一个文件系统,您需要先卸载它:

umount -- "$TEMP_DIR/sys"
rm -rf -- "$TEMP_DIR"

或者:

if mountpoint -q -- "$TEMP_DIR/sys"; then
  umount -- "$TEMP_DIR/sys" || exit
fi
rm -rf -- "$TEMP_DIR"

首先检查是否是挂载点,如果无法卸载则中止。

顺便说一句,您rm -rf将清理安装在那里的文件系统的内容,这是上面所避免的。

要清空$TEMP_DIR,将文件保留在单独的文件系统上,您可以使用find

find "$TEMP_DIR" -xdev -depth -delete

-delete暗示-depth,但仍然将其作为提醒包含在内是一个很好的做法)。

另请注意test -f "$TEMP_DIR"是测试是否$TEMP_DIR是一个常规的文件(符号链接解析后),对于任何其他类型的文件(包括目录),它将返回 false。也许你的意思是test -d相反。另请注意-frm如果要求删除已经消失的文件,则不会抱怨,因此可以在可能不存在的文件上调用它。

相关内容