事情是这样的
想必大家都听说过一个笑话:一个程序员去公司面试,面试官让他随便写个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 /*,我接盘了“——刚毕业的运维小姐姐总误删文件 ,我送了她一个命令行版 “回收站”
推荐阅读
pygame系列文章
一起来学pygame吧 游戏开发30例(开篇词)——环境搭建+游戏效果展示
一起来学pygame吧 游戏开发30例(三)——射击外星人小游戏
一起来学pygame吧 游戏开发30例(四)——俄罗斯方块小游戏
一起来学pygame吧 游戏开发30例(五)——消消乐 小游戏
一起来学pygame吧 游戏开发30例(六)——高山滑雪 小游戏
python及安全系列
python你TM太皮了——区区30行代码就能记录键盘的一举一动
如何用ssh工具连接前台小姐姐的“小米手机 ”——雷总看了直呼内行!!!
没错!python只需要一行代码!!!实现文件共享服务器!!!
Windows域控策略
Windows域策略设置 禁止客户端修改IP地址【全域策略生效】
Windows域控去掉密码强度策略 可以设置简单密码【全域策略生效】
Windows域控设置 10分钟自动锁屏的域策略 【全域策略生效】