rm-rf执行以后,rm rf 怎么办办

“曾经有人手抖执行了rm -rf / ...”, 此“梗”已老?_高效运维_传送门
“曾经有人手抖执行了rm -rf / ...”, 此“梗”已老?
爱吃鲭鱼的大叔
本文授权转载自微信号 西小口物语,高效运维公众号略做编辑。未经授权,请勿转载。据说有很多故事、尤其是惨剧,都是源于执行了 rm -rf / 的误操作,或者bug:比如 rm -rf $foo/$bar 中,$foo和$bar都是空...就像相声的行话,这已经是一个“梗”(“包袱”、有故事的“笑点”),常用来“教育”运维新同学,不要太粗心、手哆嗦,以致酿成大错。图片来源于Twitter但是,果真如此?大叔俺觉得还是得亲手试试。结果大大出乎意料!这根本不是绝对的。在有些情况下,rm -rf / 不会产生任何后果!确切的说,rm -rf / 不会被执行。根据最新的 POSIX.1-2008 (http://pubs.opengroup.org/onlinepubs//utilities/rm.html)标准,“rm -rf /”是不会被执行的,而是应该打印错误信息。The rm utility shall remove the directory entry specified by each file argument.If either of the files dot or dot-dot are specified as the basename portion of an operand (that is, the final pathname component) or if an operand resolves to the root directory, rm shall write a diagnostic message to standard error and do nothing more with such operands.请注意上面的“operand resolves to the root directory”这句话,也就是说,除了直接使用根目录作为参数,如果这个参数是在经过计算、替换等等之后、最后和根目录等价,也会提示错误的。是不是有种喜大普奔的感觉?所以,我们可以平心静气了。图片来源于http://www.keepcalm-o-matic.co.uk/高能预警!如果你看到这句就扑到自己的机器上去验证一把,吃亏了可别来找我?什么时候可以安全的 rm -rf / ?上面的描述是基于最新的POSIX标准的,而老的 POSIX.1-2004 标准则无此规定。只有你的 coreutils 的版本足够高(5.1.0以上),才可以“安全地”使用 rm -rf / 。老版本的rm还是存在此问题的。Coreutils是Linux系统的核心工具集合,包括最最基本的常用Linux命令,如ls、chmod、date、cp、mv、mkdir等。当然咯,本着刨根问底的精神,我查了一下coreutils的历史,发现5.1.0是在2004年1月发布的。因此只要我们的系统不是足够老,coreutils所带的rm应该都不会直接执行rm -rf /命令了。口说无凭,实测为证!下面是我的测试环境。$ uname -r3.10.0-327.13.1.el7.x86_64$ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 从如下命令可知,操作系统版本是CentOS 7.2;coreutils是8.22,比较新的版本。$ yum info coreutils... ...Installed PackagesName
: coreutilsArch
: x86_64Version
: 8.22Release
: 15.el7_2.1... ...Description : These are the GNU core utilities.
This package is the combination of
: the old GNU fileutils, sh-utils, and textutils packages.首先,来执行一下 rm -rf / 看看:$ sudo rm -rf /rm: it is dangerous to operate recursively on '/'rm: use --no-preserve-root to override this failsafe太帅了!无法被执行!再测试一种情况,不直接指定根文件夹,而是使用变量:$ unset $foo$ unset $bar$ sudo rm -rf $foo/$barrm: it is dangerous to operate recursively on '/'rm: use --no-preserve-root to override this failsafe更帅了!和上面的直接使用根目录作为参数是同样的错误。高阶使用(虽然猛烈不建议)也不是说最新版本的 coreutils 就不能执行 rm -rf / 了,可以使用 --no-preserve-root 来取消对root文件系统的保护,直接删除整个文件系统。加上这个选项再试试:$ sudo rm -rf --no-preserve-root /... ...哗哗哗的打印出删除错误信息... ...rm: cannot remove '/var/lib/nfs/rpc_pipefs/lockd': Operation not permitted$ ls-bash: ls: command not found最后的ls命令出错了,可以看出整个文件系统都被删除了。嗯,game over...“rm -rf / ”,此梗已老!我查了一下coreutils的历史,发现5.1.0是在2004年1月发布的,修复于POSIX.1-2008。据此推测,至今已经解决7年多了?因此只要我们的系统不是足够老,这个coreutils所带的rm应该都不会直接执行rm -rf /命令了。您说,这是不是一个老梗?所以,rm -rf / 冤哪~当然咯,不过即使 rm -rf / 不会造成毁灭性的打击,rm之前都要确认三遍!本文转载自西小口物语,高效运维公众号略作编辑。
weixin search xxk_talks
weixin follow xxk_talks
当然咯,同样欢迎您关注高效运维公众号?
觉得不错,分享给更多人看到
高效运维 微信二维码
分享这篇文章
4月22日 22:25
高效运维 最新头条文章
高效运维 热门头条文章无意间执行了rm-rf*,多么痛的领悟【linux吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:171,676贴子:
无意间执行了rm-rf*,多么痛的领悟收藏
血的教训,rm-rf*这个命令最好不要乱用,我想静静
linuxO基础学习中心「需高中以上」linux,达内总监授课,免费试学!达内IT培训,专设linux学习课程,「入门+精通」,一步全搞定!学习+就业!
---贴吧极速版 For UWP
rm -rf /*才是真的不要乱用
一旦有用到rm -rf的命令一定要多检查路径,或者干脆写绝对路径
…………来自垃圾手机MX4    f?ヽ     |_||     |= |     |_ |   /⌒|~ |⌒i-、   /| | | | |  |( ( ( ( | |      |    \     /    \     
以身试法,难能可贵 ?﹏﹏ ㊣年少不识李宗盛,长大方知林忆莲。
我也就是删掉了线上一个mysql的slave库
/$dir ,一旦dir为空,就gg
勇士. ?﹏﹏ 我掐指一算,楼主的贴子发表于3小时16分钟前,应该是 14:26发的。
切换到/tmp输入也没事
尚观linux培训,120天入门到精通,年薪10W入职,签订《就业协议》,法律有效,企业项目实战授课.毕业直接增长2年工作经验,2017linux培训&十佳机构&
rm -rf $HOME/
sudo cat &/dev/sda
sudo cat &/dev/sda
我也差不多………… rm -rf ~
就是手贱试了一下
sudo shred /dev/sda
类似的贴子看到过好多次啊
明明现在的linux内核不允许执行这条命令。I am fish.
你说过往不及回首 别后悔了才会 想方设法的把你追回
你穿错了嫁妆怎能有快乐 再上一层胭脂也不美
勇士. ?﹏﹏ 我掐指一算,楼主的贴子发表于3小时16分钟前,应该是 14:26发的。[图片]
家目录是zfs ,每15分钟snapshot一次,从此不用操心,最多损失15分钟的工作
试试 trash-cil,使用trash命令来代替rm命令
对使用挽尊卡
挽回他的尊严!
效果:经验+1
对使用挽尊卡
挽回他的尊严!
效果:经验+3
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 rm rf 怎么办 的文章

 

随机推荐