事情是这样的

想必大家都听说过一个笑话:一个程序员去公司面试,面试官让他随便写个shell脚本看看

结果程序员在公司机器上写了个简单的 rm -rf  /* 

今天博主好奇到无聊,想看看到底会有什么效果呢。

就拿了一台不用的废弃虚拟机系统玩了一把。

在这里跟大家,汇报一下战果:

大家一定注意谨慎:玩完之后,绝大部分数据无法恢复,系统会基本完全崩溃状态,

建议在废弃的机器上玩可以,正式环境千万不要,另外大家写删除命令的时候,也一定要小心

Linux机器准备

首先找了台好久不用的虚拟机,回到根目录下,直接执行rm -rf * ;

然后就开始看到系统开始从根目录开始删除

开始报一些无法删除的错误

因为一些正在运转的misc net等硬件文件 无法删除

当我们误操作的时候,发现这些rm: cannot remove...,就赶紧中止还有得救

相关路径解读

boot:启动路径,部分文件,正在运行删不掉。

misc net:硬件相关运行中,不允许删除。

dev/shm:

/dev:目录下一般都是一些设备硬件文件,例如磁盘、内存、摄像头、网卡等等。
/dev/shm: 这个目录是linux下一个利用内存虚拟出来的一个目录,这个目录中的文件都是保存在内存中,而不是磁盘上。

其大小是非固定的,即不是预先分配好的内存来存储的。(shm == shared memory)

dev/pts/ptmx

ptmx 虚拟终端相关文件 系统不让删除

Linux终端:

另外sys目录下的一些系统文件包括,

挂载的磁盘信息等,root也是没有权限删除的,

其余的文件夹 opt mnt home root等等 统统被删除
 

Linux挣扎了一下:sys/block的块设备不让删除、

nfs文件系统的缓存、挂载记录、锁等不让删除

rm -rf /* 运行完之后

删除完成之后,我们在根目录下看一下:

ls 命令已经没有了,这是因为存放命令的/bin目录下的所有二进制命令文件都被删除了,

包括 yum pwd 等等统统没有了,只有cd命令还在,

这是因为cd命令并不在/bin下

whereis cd :查看一下,cd在/usr/bin目录下

可以看到根目录下 只剩下/boot的启动文件夹。

硬件相关的misc net dev

sys系统相关文件夹

这是给我们下次启动时 进行启动牵引,牵引到grub界面 之后,由

于系统中所有的东西都被我们删除了,所以就卡死在grub界面 无法进内核。

抢救及预防措施

这个命令是极其危险的,所以一旦误操作

1、中止命令

首先,在意识到命令执行时,立即按Ctrl+C 终止命令。尽可能的保护系统文件。

2、不要退出当前shell,不要重启

因为,我们不清楚,到底有哪些文件被删除了。

我们总会下意识的觉得,重启下就好了。这个时候千万不要重启,因为一重启,你可能无法再进入系统,连最后抢救的机会都没有了。

3、系统文件夹迁移

系统根目录下,大体就是这几个文件夹。

像/bin /sbin :主要是存储一些命令的文件夹。如果被删除了,我们可以通过从其他的服务器,将/bin目录,压缩,拷到当前服务器解压,进行替换。

4、系统快照

这是一个非常实用的方法。我们可以定时做系统快照,例如:每天凌晨2点,对系统做一个快照;也可以每逢比较重大的系统更新或者服务搭建之后,做一个快照。

这样,当我们误操作之后,就会有一个回退的备份。

5、命令重写

可以将rm -rf 重写,构造一个回收站,可以参考博主的这篇博文:

“你的rm -rf /*,我接盘了“——刚毕业的运维小姐姐总误删文件,我送了她一个命令行版 “回收站”

 推荐阅读

【资源推荐】

python实战

【pygame开发实战开发30例 完整源码】

【pygame游戏开发专栏,获取完整源码+教程】

CSDN官方学习推荐 ↓ ↓ ↓

  • CSDN出的Python全栈知识图谱,太强了,推荐给大家!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐