我删除了我的桌面,一切都冻结了。我做了什么?

unk*_*own 3 bash

所以我正在玩一个实时磁盘实验(使用外部 HHD 作为实时磁盘),我制作了一个脚本,在我可以停止它之前在我的桌面上创建了 9,023 个目录。作为菜鸟,我运行了这个命令来清理我的烂摊子:

rm -rf Desktop 
Run Code Online (Sandbox Code Playgroud)

然后在我的主目录中创建了一个名为 Desktop 的新文件夹。我的电脑正常工作了几秒钟,然后除了我的鼠标之外的一切都冻结了。谢天谢地,这一切都在一个实时磁盘上,所以没有丢失任何东西,但我想知道我实际上做了什么。

我试图用谷歌搜索“ubuntu 删除的桌面目录”和其他变体,但我得到的只是人们试图摆脱它,而不是把它带回来。

编辑:对我运行的叉形炸弹有一些兴趣。别笑:

while true; do
for i in a; do
declare b=b+1
mkdir "$b" 
done
done
Run Code Online (Sandbox Code Playgroud)

我有点猜到它会做什么,但我习惯于使用 Python 工作,我可以在它失控之前快速杀死它。

对于在未来某个时候读到这篇文章的任何其他人:不要运行那个叉子炸弹,它会弄得一团糟。

PS 在你说我一开始这样做是多么愚蠢之前,请注意我在一个活动磁盘中,该磁盘只是为了做这样的事情而被搁置,以便我可以学习。

KGI*_*III 5

使用 Live USB 完成此操作很好,否则您几乎可以肯定会丢失一些数据。在那之后清理将是一个巨大的浪费时间。

首先,您运行了所谓的分叉炸弹。分叉炸弹是一个简单的、经常被混淆的命令,它会不断产生新的进程、文件夹或文件,直到它填满磁盘空间、占用 CPU 周期或消耗所有 RAM。这会导致计算机冻结,因为它没有更多资源可提供。

其次,您删除了您所看到的 DE(桌面环境),它是您与之交互的图形,您打开的窗口(有点 - 有一个窗口管理器,但我们现在将跳过它)。基本上,你杀死了所有你可以点击的东西。

好好学习。在终端中输入命令之前使用您最喜欢的搜索引擎。总是,总是在按下之前知道命令的作用ENTER。我怎么强调都不过分。有些人会故意误导你。终端是一个潜在的强大工具。它是您工具箱中最棒的工具,但与所有工具一样,必须小心使用。

如果你告诉我们命令是什么,对于 fork 炸弹,我们也许能够消化它并准确地告诉你它做了什么以及为什么。你看起来是个好奇的人,所以也许你也想学那个?


编辑:

您现在已经包含了 fork 炸弹的代码。我会把这个包括在内,供下一个人来。如果你查看它并解析逻辑,你可以看到它说只要条件存在(为真)然后做一些事情(创建一个枚举目录),因为没有什么告诉它停止(循环),它会一直持续下去,直到资源被消耗完,RAM 被吃光,或者直到出现某种使事情冻结的冲突。(这可能是诸如内存泄漏之类的各种事情,但这可能不是这里的一个因素。)

从事情的声音,或者从我正在阅读的内容来看,您似乎做得很好。这是对其他人的明确警告,不要运行您的代码(您应该使用编辑功能将其添加到您的帖子中,或者如果您愿意,其他人也可以这样做)。很有创意。我想我从来没有见过那样做,但理论对他们来说几乎是一样的。同样,对于其他人来说,这可能隐藏在混淆代码中,或者如果您不知道如何解析 Perl(作为示例),您可能根本无法理解它。这是不该做什么的一个很好的例子。

我敢说,您应该完成安装并获得更多乐趣。只要保持良好的备份。