为什么 'rm -rf / --no-preserve-root' 不删除自己并崩溃?
Why doesn’t 'rm -rf / --no-preserve-root' delete itself and crash?
rm -rf / --no-preserve-root
此命令将删除我磁盘中的所有内容。但是,如果它删除所有内容(包括 OS),内核和当前进程如何保留 运行?
在大多数 UNIX 系统上,当前打开的文件即使从文件系统中删除也不会被删除(直到它们被关闭)。
已经加载到内存中的程序(例如 运行 内核和 rm
二进制文件)并且不需要访问更多文件不会受到影响通过删除文件。
hahahahhahh -- 你做到了吗?
OS n'stuff 在 ram 中运行。所以这可能不会完成。但它会损坏您的 OS 无法修复。我不能说我曾经尝试过。
如果 "rm" 二进制文件(例如)加载到 ram 中。然后二进制文件从磁盘上删除,kernel/OS 没有理由将图像写回磁盘 - 它会消失。
我有一台 centos 机器,如果有人想看看会发生什么,我可以报废吗?
首先,尚不清楚它是否会 成功地从您的文件系统中删除所有内容。 (当然,大部分数据仍将在磁盘上,如果您可以 运行 磁盘/磁盘映像上的文件恢复工具,您可以找回它。)
但事情仍然有效的原因是 rm
命令实际上使用名为 unlink
的系统调用来删除文件。如果满足以下条件,该系统调用只会实际删除文件:
- 文件系统中没有指向该文件的其他(硬)链接。
- 没有人在使用它。在这种情况下,"using it" 可能正在通过文件描述符读取/写入...或执行它。
当您 运行 rm
那样时,它实际上无法物理删除 OS 内核、rm
可执行文件、您的可执行文件shell 和各种系统守护进程,以及许多其他 "in use" 的东西。如果您能够彻底关闭 OS,那么其中的许多文件将被删除……但这不可能,因为您已经删除了所有的关闭脚本。
但很有可能您最终会得到一个无法再正常启动的系统。
rm -rf / --no-preserve-root
此命令将删除我磁盘中的所有内容。但是,如果它删除所有内容(包括 OS),内核和当前进程如何保留 运行?
在大多数 UNIX 系统上,当前打开的文件即使从文件系统中删除也不会被删除(直到它们被关闭)。
已经加载到内存中的程序(例如 运行 内核和
rm
二进制文件)并且不需要访问更多文件不会受到影响通过删除文件。
hahahahhahh -- 你做到了吗?
OS n'stuff 在 ram 中运行。所以这可能不会完成。但它会损坏您的 OS 无法修复。我不能说我曾经尝试过。
如果 "rm" 二进制文件(例如)加载到 ram 中。然后二进制文件从磁盘上删除,kernel/OS 没有理由将图像写回磁盘 - 它会消失。
我有一台 centos 机器,如果有人想看看会发生什么,我可以报废吗?
首先,尚不清楚它是否会 成功地从您的文件系统中删除所有内容。 (当然,大部分数据仍将在磁盘上,如果您可以 运行 磁盘/磁盘映像上的文件恢复工具,您可以找回它。)
但事情仍然有效的原因是 rm
命令实际上使用名为 unlink
的系统调用来删除文件。如果满足以下条件,该系统调用只会实际删除文件:
- 文件系统中没有指向该文件的其他(硬)链接。
- 没有人在使用它。在这种情况下,"using it" 可能正在通过文件描述符读取/写入...或执行它。
当您 运行 rm
那样时,它实际上无法物理删除 OS 内核、rm
可执行文件、您的可执行文件shell 和各种系统守护进程,以及许多其他 "in use" 的东西。如果您能够彻底关闭 OS,那么其中的许多文件将被删除……但这不可能,因为您已经删除了所有的关闭脚本。
但很有可能您最终会得到一个无法再正常启动的系统。