rm -rf 如果中间删除不了,还会继续删除吗?

Ser*_*tch 0 filesystems ubuntu rm resources failover

考虑一个garbage包含许多文件和目录的目录。如果我运行rm -rf garbage,但其中的某些文件或目录garbage正被操作系统/NFS/等占用,因此rm -rf它们将会失败。剩下的会删掉吗?或者它会在第一次失败时停止删除吗?当前的操作系统是 Ubuntu 20.04,但人们感兴趣的是这种行为是标准的,还是取决于操作系统(版本)。

Ste*_*itt 5

rm\xe2\x80\x99s 行为在 POSIX 中详细指定(另请参见What is theactual order of Steps due to rm -Rf on a very largefolder?,它重现了完整的序列)。在无法删除当前文件或该文件不存在的所有情况下,它必须

\n
\n

继续处理任何剩余的文件

\n
\n

这意味着即使在失败的情况下,它也会继续删除文件(如果可以的话)。这既适用于指定为 的参数的文件rm -rf,也适用于处理目录时找到的文件。

\n

请注意,在某些情况下,它将永久等待操作的结果(例如,如果它尝试删除服务器未\xe2\x80\x99t响应的NFS挂载上的文件);它将最终进入不间断睡眠(状态D),但如果该状态解决,它将继续删除文件。它永远不会真正停止删除,直到 \xe2\x80\x99s 用完要删除的文件。

\n