标签: rm

如何防止意外 rm -rf /*?

我只是rm -rf /*不小心跑了,但我的意思是rm -rf ./*(注意斜线后面的星星)。

alias rm='rm -i'并且--preserve-root在默认情况下不救我,那么,有没有这方面的任何自动进行保护?


我不是 root 并立即取消了该命令,但在某处或某处有一些宽松的权限,因为我注意到我的 Bash 提示已经坏了。我不想依赖权限而不是 root(我可能会犯同样的错误sudo),而且我不想因为系统中某处丢失一个文件而寻找神秘的错误,所以,备份和sudo是好的,但我想要更好的东西来处理这个特定的情况。


关于三思而后行。我实际上正在使用它!但我用它来解决一些涉及 10 种不同事物的复杂编程任务。我深深地沉浸在这个任务中,没有任何脑力来检查标志和路径,我什至不考虑命令和参数,我认为像“空当前目录”这样的动作,我大脑的不同部分将它们转换为命令,有时会出错。我希望计算机纠正它们,至少是危险的。

linux bash command-line-interface safety rm

171
推荐指数
11
解决办法
9万
查看次数

rm 在包含数百万个文件的目录上

背景:物理服务器,大约两年,7200-RPM SATA 驱动器连接到 3Ware RAID 卡,ext3 FS 挂载 noatime 和 data=ordered,不在疯狂负载下,内核 2.6.18-92.1.22.el5,正常运行时间 545 天. 目录不包含任何子目录,只有数百万个小(~100 字节)文件,还有一些更大的(几 KB)文件。

我们有一台服务器在过去几个月中出现了一些问题,但我们直到前几天才注意到它,因为它开始无法写入目录,因为它包含太多文件。具体来说,它开始在 /var/log/messages 中抛出这个错误:

ext3_dx_add_entry: Directory index full!
Run Code Online (Sandbox Code Playgroud)

有问题的磁盘有大量剩余的 inode:

Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda3            60719104 3465660 57253444    6% /
Run Code Online (Sandbox Code Playgroud)

所以我猜这意味着我们达到了目录文件本身可以有多少条目的限制。不知道会有多少文件,但正如您所见,不能超过三百万左右。不是那么好,请注意!但这是我的问题之一:上限到底是多少?是可调的吗?在我被骂之前——我想把它调低;这个庞大的目录导致了各种各样的问题。

无论如何,我们在生成所有这些文件的代码中找到了问题,我们已经更正了它。现在我坚持删除目录。

这里有几个选项:

  1. rm -rf (dir)

    我先试过这个。在它运行了一天半没有任何明显影响后,我放弃并杀死了它。

  2. 目录上的 unlink(2):绝对值得考虑,但问题是通过 fsck 删除目录中的文件是否比通过 unlink(2) 删除更快。也就是说,以某种方式,我必须将这些 inode 标记为未使用。当然,这假设我可以告诉 fsck 不要删除 /lost+found 中文件的条目;否则,我只是转移了我的问题。除了所有其他问题之外,在阅读更多内容之后,结果证明我可能不得不调用一些内部 FS 函数,因为我能找到的 unlink(2) 变体都不允许我随意删除一个包含条目的目录。呸。
  3. while [ true ]; do ls -Uf | head -n 10000 | xargs rm -f 2>/dev/null; …

ext3 directory kernel rm

118
推荐指数
6
解决办法
5万
查看次数

`rm -rf / --no-preserve-root` 会弄乱 bios 吗?

为了查看压缩整个系统的大致速度,然后在系统被 foobar 删除时恢复该系统,我将我们的一个主要系统部分克隆到工作站上,虽然它不是我们公司系统的组成部分,但很适合有运作。我定时创建整个系统的 tarball,并检查它以确保它看起来不错。

我接着跑rm -rf / --no-preserve-root。我以前从来没有机会这样做,所以很有趣。首先。

当我重新启动盒子时,没有任何显示。不是“戴尔”标志,不是 BIOS 选项,什么都没有。

我将驱动器连接到一个不同的盒子,并发现它有一个 UEFI 分区,这让我很懊恼。我假设我的死亡命令有效地控制了那个分区。

我将一个不同的、功能正常的驱动器连接到现已解散的工作站,但工作站仍然什么都不做。

有没有人看到过这样的东西,或者对寻找什么有建议?运行这个rm命令是如何把整个盒子搞得这么乱的?

更新:我们将包装盒退回给戴尔。我们无法准确诊断这是巧合还是dronus 描述的情况。但是,我会接受 dronus 的回答,因为它描述了发生这种情况的可能原因。此外,它将警告其他人不要在未来做同样的事情。如果有人发现戴尔使用有缺陷的 UEFI 的一些记录,那会很有帮助。

bios rm uefi

35
推荐指数
4
解决办法
5906
查看次数

如何在 ext3/linux 上使 `rm` 更快?

我使用默认选项安装了 ext3 文件系统。在它上面我有一些 ~ 100GB 的文件。

删除任何此类文件需要很长时间(8 分钟)并会导致大量 io 流量,从而增加服务器负载。

有什么方法可以使 rm 不那么具有破坏性?

linux performance ext3 rm unlink

32
推荐指数
3
解决办法
3万
查看次数

无法使用 rm -rf 删除文件夹。错误:设备或资源繁忙

我正在尝试删除 /var/www/html 但我收到此错误:

rm: cannot remove `html': Device or resource busy
Run Code Online (Sandbox Code Playgroud)

debian directory var rm

23
推荐指数
2
解决办法
16万
查看次数

Ansible 是否会阻止在 shell 脚本中执行“rm -rf /”

这是基于这里的这个恶作剧问题。所描述的问题是有一个 bash 脚本,其中包含以下内容:

rm -rf {pattern1}/{pattern2}
Run Code Online (Sandbox Code Playgroud)

...如果两种模式都包含一个或多个空元素rm -rf /,则假设原始命令被正确转录并且 OP 正在进行大括号扩展而不是参数扩展,则将扩展为至少一个实例。

在 OP对骗局解释中,他说:

命令 [...] 是无害的,但似乎几乎没有人注意到。

Ansible 工具可以防止这些错误,[...] 但是 [...] 似乎没有人知道这一点,否则他们就会知道我所描述的不会发生。

因此,假设您有一个rm -rf /通过大括号扩展或参数扩展发出命令的 shell 脚本,使用Ansible是否会阻止该命令被执行,如果是这样,它是如何做到的?

rm -rf /只要您使用 Ansible 来执行,以 root 权限执行是否真的“无害”?

linux bash rm ansible

23
推荐指数
1
解决办法
5260
查看次数

Unix 魔法,从目录树中删除所有 .pyc 文件?

有没有一种从目录树中删除所有 .pyc 文件的快速方法?

unix find rm

11
推荐指数
2
解决办法
6483
查看次数

有没有办法在 Linux 上删除 100GB 文件而不影响 IO/负载?

我有一个巨大的日志文件,需要在生产 Web 服务器上删除。如果我在 Linux 上运行它,我担心它会使系统陷入困境。有什么绝妙的想法吗?

更新:

文件系统:ext3

分区:/var(主要是日志和 MySQL 数据)

不再写入日志文件。(没有附加其他数据)

Web 服务器是 LAMP(大量 IO)

linux io rm

9
推荐指数
2
解决办法
1万
查看次数

防止 bash 脚本中出现“rm -rf /”的最佳实践

众所周知,env.variable 中的额外空间会导致 bash 脚本中的 / 目录被删除。

#!/bin/bash
...
rm -rf /$MYPATH
Run Code Online (Sandbox Code Playgroud)

如果 $MYPATH 包含像"dir""dir /"这样的值,它将导致"rm -rf / dir""rm -rf dir /"。并会导致“rm -rf /”

是否有任何最佳做法可以防止这种情况?

linux bash rm

8
推荐指数
2
解决办法
3932
查看次数

如何防止子树删除(`rm -rf`)使其他进程无法进行磁盘 I/O?

我们有一个非常大(多 GB)的 Nginx 缓存目录用于繁忙的站点,我们偶尔需要一次清除所有目录。我过去解决了这个问题,方法是将缓存文件夹移动到新路径,在旧路径上创建一个新的缓存文件夹,然后rm -rfing 旧的缓存文件夹。

然而,最近,当我在忙碌的早晨需要清除缓存时,来自的 I/Orm -rf使我的服务器进程无法访问磁盘,因为 Nginx 及其面向的服务器都是读取密集型的。当 CPU 处于空闲状态并rm -rf占用iotop.

ionice -c 3在调用 时尝试过rm,但它似乎对观察到的行为没有明显影响。

有没有办法驯服rm -rf更多地共享磁盘?我是否需要使用不同的技术来获取线索ionice

更新:

有问题的文件系统是 AWS EC2 实例存储(主磁盘是 EBS)。该/etc/fstab条目如下所示:

/dev/xvdb       /mnt    auto    defaults,nobootwait,comment=cloudconfig 0       2
Run Code Online (Sandbox Code Playgroud)

linux hard-drive io ionice rm

8
推荐指数
2
解决办法
1909
查看次数