Linux下rm -rf删除文件夹报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下rm -rf删除文件夹报错相关的知识,希望对你有一定的参考价值。

rm: cannot remove `/home/luhui/environment/build/hdf5_build/p/.nfs0000000014c52b5500000061': Device or resource busy
rm: cannot remove `/home/luhui/environment/build/hdf5_build/p/.nfs0000000014c52b5600000060': Device or resource busy
rm: cannot remove `/home/luhui/environment/build/hdf5_build/p/.nfs0000000014c52b5400000062': Device or resource busy
请问这个问题怎么解决?求大神!

在终端执行 lsof +D 再加上无法删除文件的目录,把显示的process都kill掉,然后再rm就可以了。 参考技术A 条件允许的话,建议重启下系统应该就好了 参考技术B 报了什么错?
可能的原因:1 有些文件没权限删除;2 文件夹下面有些文件正在使用
参考技术C 是不是有人正在使用那个资料夹!?

不然就在rm後面加 -r 这个参数追问

我已经加-r这个参数了,还是会报错。

追答

你用工具 SSH Secure File Transfer Client,从远端去删看看好了!! 或著搬移看看~

参考技术D rm -r +文件路径;
例如:要删除的1.txt文件在/home/ftk/apache-tomcat-5.5.20/workrm文件夹下,则命令为: -r /home/ftk/apache-tomcat-5.5.20/work/1.txt
希望可以帮到你,望采纳哦~
请采纳。

Linux下防止rm误操作建立回收站

1、将下面脚本添加到某个目录下(例如/data/shell下)

脚本名称:rm-remove.sh

脚本内容:

#!/usr/bin/env bash

# func: 安全:rm的替换方法

# Time: 2018/2/1

# editor: yw

# --------------------

 

PARA_CNT=$#

TRASH_DIR="/data/backup/.zc_trash"

DATE=`date +%F`

TRASH_DIR_D=${TRASH_DIR}/${DATE}

if [ ! -d ${TRASH_DIR_D} ] ;then

    mkdir -p ${TRASH_DIR_D}

fi

 

for i in $*

do

    STAMP=`date +%s`

    if [ ! -d ${TRASH_DIR_D}/${STAMP} ] ;then

        mkdir -p ${TRASH_DIR_D}/${STAMP}

    fi

    pwdname=`dirname ${i}`

    filename=`basename ${i}`

    mv ${i} ${TRASH_DIR_D}/${STAMP}/

    echo "rm ${pwdname}/${filename}" >> ${TRASH_DIR_D}/${STAMP}/${STAMP}.log

 

done

2、创建回收站目录

[[email protected] shell]# mkdir /data/backup/.zc_trash

3、添加环境变量

[[email protected] shell]# vim ~/.bashrc

在alias的最后一行添加脚本执行方式

alias rm="sh /data/shell/rm-remove.sh"

4、环境变量生效

[[email protected] ~]# source ~/.bashrc

5、测试

在任何目录下新建一个文件或者目录执行rm删除操作会报错

[[email protected] ~]# touch cc

[[email protected] ~]# rm -f cc

dirname:无效选项 -- f

请尝试执行"dirname --help"来获取更多信息。

basename:无效选项 -- f

请尝试执行"basename --help"来获取更多信息。

mv: 在"/data/backup/.zc_trash/2018-02-01/1517462127/" 后缺少了要操作的目标文件

请尝试执行"mv --help"来获取更多信息。

[[email protected] ~]#

我们执行了rm操作之后发现当前目录下确实cc文件已经不存在了,但是我们只是对该文件做了mv 的操作,并没有真的删除,

6、切换到回收站目录下查看

[[email protected] shell]# cd /data/backup/.zc_trash/

[[email protected] .zc_trash]# ls

2018-02-01

[[email protected] .zc_trash]#

我们可以看到当前目录下有一个时间目录,进入之后会看到一个unix时间为名称的目录

[[email protected] .zc_trash]# cd 2018-02-01/

[[email protected] 2018-02-01]# ls

1517462127

[[email protected] 2018-02-01]#

我们使用unxi解码工具

[[email protected] 2018-02-01]# date -d @1517462127 +"%Y-%m-%d %H:%M:%S"

2018-02-01 13:15:27

[[email protected] 2018-02-01]#

进入这个目录之后看到一个log文件和我们刚才rm的cc文件

[[email protected] 2018-02-01]# cd 1517462127/

[[email protected] 1517462127]# ls

1517462127.log  cc

[[email protected] 1517462127]#

查看日志内容为我们刚才执行的rm操作命令

[[email protected] 1517462127]# cat 1517462127.log

rm /

rm ./cc

[[email protected] 1517462127]#

7、综上:我们做了以上限制之后,删除的东西会mv到这个回收站目录下并且会以unix时间为目录

 

以上是关于Linux下rm -rf删除文件夹报错的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令篇之mkdir命令,rmdir命令和rm命令

linux 重写rm命令

老男孩教育每日一题-2017年5月7日-加餐-linux下面如何实现,执行rm命令,就显示do not use rm command

Linux cp/rm/mv 强制覆盖

sh [linux:rm all hoge] desktop.iniとかゴミファイルの一括削除rmコマンド

替代Linux下的rm命令