文件夹结构如下:/home/bobuser/ftp/files
我以 root 身份登录,并已取得/bobuser
、/ftp
和的所有权/files
。我对所有文件夹都有 777 权限。 里面什么都没有/files
。
当我在里面的时候,我会/files
得到ls -a
. ..
当我做
lsof +D /home/bobuser/ftp/files
我明白了:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1479 root cwd DIR 253,1 4096 256003 /home/bobuser/ftp/files
lsof 2080 root cwd DIR 253,1 4096 256003 /home/bobuser/ftp/files
lsof 2081 root cwd DIR 253,1 4096 256003 /home/bobuser/ftp/files
如果我尝试终止服务 2080 或 2081 ( kill -9 2081
),它会告诉我服务不存在。每次运行相同的命令时,这两个 PID 编号都会发生变化。如果我终止 1479,它会终止我作为用户的 SSH 会话,然后我将被注销。
事实上我想删除/bobuser
下面的所有内容。
编辑:
根据评论的要求,提供更多输出:
以 root 用户身份登录并将目录更改为 root,尽管我已经在那里了。
root@myhost:~# cd /root
运行下一行不会返回任何内容。只有当我进入文件目录时,我才会收到响应,然后我会得到如上所示的输出。
root@myhost:~# lsof +D /home/bobuser/ftp/files
接下来尝试此行并返回 0
root@myhost:~# ls -l /home/bobuser/ftp/files
total 0
答案1
简短回答:
umount /home/bobuser/ftp/files
rm -r /home/bobuser/ftp/files
如果你看一下FD手册页的部分lsof
,您会发现这cwd
意味着当前工作目录。
您提到的另一件事是第二行和第三行的 PID 不同。这些是lsof
命令的 PID,因此每次运行 时lsof
,它都会以新的 PID 运行,然后关闭。
将目录更改为后/root
,我们可以看到目录下没有打开的文件/home/uerbob/ftp/files
,因此我的第一个猜测是某个分区安装在那里。
您应该运行以下命令来查看是否有任何分区安装在那儿:
mount | grep -i bobuser/ftp
如果是,你将获得如下输出:
/dev/vda1 on /home/bobuser/ftp/files type ext4 (rw,relatime,data=ordered)
然后只需卸载分区并删除目录。
答案2
有时文件夹未挂载,因此umount
命令不起作用。
我曾以非 root 用户身份对这种无法删除的文件夹使用过这个命令:
sudo rm -r /mnt/hdd/movies/folder-problem