WSL Ubuntu。如何删除具有 0 个硬链接的文件?

WSL Ubuntu。如何删除具有 0 个硬链接的文件?

我不知怎么地最终得到了以下结果 ls -la::

total 0
drwxrwxrwx 1 umain umain 4096 Jan 30 12:32 .
drwxr-xr-x 1 umain umain 4096 Jan 30 10:57 ..
-rw-r--r-- 0 umain umain    0 Jan 30 12:32 something.php
drwxrwxrwx 1 umain umain 4096 Jan 30 10:59 src

请注意,硬链接计数0something.php

同样地,stat something.php

 File: something.php
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 2h/2d   Inode: 2814749767170024  Links: 0
Access: (0644/-rw-r--r--)  Uid: ( 1000/   umain)   Gid: ( 1000/   umain)
Access: 2023-01-30 12:32:19.055876000 -0500
Modify: 2023-01-30 12:32:19.055876000 -0500
Change: 2023-01-30 12:32:19.055876000 -0500
 Birth: -

无论我怎么尝试,我都无法删除它。sudo rm -f告诉我我没有权限。sudo su | rm -f也不起作用。我尝试在删除它之前将其设置为 777。没有运气。

我可以很好地编辑该文件,对其进行 cat 等等。就是无法删除它。

有没有办法彻底删除 inode

这是 WSL Windows 10 中的 Ubuntu 20.04。

答案1

我刚刚在 CentOS 机器上遇到了同样的问题。

@harrymc 的评论解决了这个问题,一个旧的过程正在使用该文件。

  1. lsof | grep <filename>查找进程
  2. kill <ps ID>终止该进程,文件随即消失

可能该文件已被删除,但仍由进程访问。使用lsof以下命令检查文件是否正在使用:*lsof | grep something.php`。如果是这种情况,它将在重新启动后消失。 – harrymc 2023 年 1 月 30 日 21:01

相关内容