在删除文件时,经常会出先
rm: cannot remove `name/current/.nfs00000000036a004e00000009': Device or resource busy
rm: cannot remove `name/.nfs00000000036a00320000000a': Device or resource busy
去网上搜了一下,发现是有别的进程在使用该文件
方法一:
首先解除用到此文件的进程:
umount XXXXX
然后再删除
rm -rf XXXXX
例子:
$ rm -rf netns/
rm: cannot remove ‘netns/default’: Device or resource busy
$ umount netns
$ rm -rf netns/
方法二:
使用lsof |grep nfs00000 命令查看哪个进程在使用该文件,输出结果如下:
java 32308 hadoop 199uW REG 0,23 10 57278514 /public/hadoop/name/.nfs00000000036a00320000000a (iboss01:/public)
java 32308 hadoop 201u REG 0,23 1048576 57278542 /public/hadoop/name/current/.nfs00000000036a004e00000009 (iboss01:/public)
很显然,进程号32308在使用上面的文件
要删除这个文件就要把32308这个进程杀死
命令kill -9 32308 (在这里我就先不使用kill -9命令,因为我在网上看到有人使用这个命令把java虚拟机搞坏了,我先重启电脑试试)
方法三:
/sbin/fuser -k filename
从网上找到前两种方法,发现umount、lsof命令无法使用,问过同事后使用第三种方法,很快就解决了