rm 好凶残,太 TM 吓人了!

Posted 小姐姐味道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rm 好凶残,太 TM 吓人了!相关的知识,希望对你有一定的参考价值。

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。

今天感冒刚好,又找到了文风飘逸的感觉,打字手也不抖了。好久没有这么掌笔,得让新到的朋友们体验一下飞翔的感觉。否则把洒家当成了一个小小的运营,那就无趣的很。

↓↓↓

小的时候,村里有个理发师,功夫十分了得。你在座位上坐好之后,只见刀光剑影刷刷几下,鳃毛抖动之间,就能获得满意的发型。即使是剃个光头的需求,也能快速完成。

完事之后,剃头刀上不会占有半点鲜血和毛发。

我很羡慕他的刀。

到底是他的刀厉害?还是他的人厉害?明白事理之后,我明白了是后者,而不是他手中的屠龙剃头刀!

随着年龄越来越大,我踏上了编程这条道路。一次偶然的原因,看到同事上上下翻飞的运行rm命令,勾起了我久远的、对刀的回忆。

跨上一把刀,行走天下,是一件非常潇洒的事。rm这个命令,圆你的武侠梦,很合适。只要它所到之处,玉石俱焚,寸草不生。

获取这把刀的成本很低,你只要会使用Linux就行了。显然,人人都拥有这么犀利的刀,会引起混乱。

如果你的功力不够,掌控不了这把刀,那么就会被它反噬;如果你对它不尊重,它也会误伤到你自己,不留一点情面;如果你心存恶念,它就能在瞬间满足你。

每一年,都有好多人因为舞刀伤到了自己,或者伤了人进了局子。

在rm命令的刀下,是无数血泪堆砌的故事,每个故事都让你潸然泪下,或者露出兔死狐悲的哀伤。

rm这个命令,到底是杀鸡刀,还是杀牛刀?要看掌刀的人;是束之高阁,还是藏在袖中,要看是否还心存热血。

但现实的生活总不会让情绪发泄的太澎湃。多为多年混社会的人,我们早已经学会了忍耐。当你的命令行输入到了rm -rf /,会不由自主的再按下回退键。就像乌龟发现了壳外的危险,把龟头紧紧缩在壳里面。

虽然憋屈了一点,但毕竟安全。

安全只是暂时的

但安全,只是暂时的。

有一次,有一个伟大的布道者,和自己的小弟们普及命令行知识。他聊到了rm -rf。

出于对宝刀的热爱,就像真正爱刀的人,会用自己的舌头和口水,舔净刀上污渍直到一尘不染。他打开了一个命令行终端,输入了rm -rf /这个命令。

“这是一个危险的命令!”,他说,“你们永远不要在线上环境运行”。

旁边的小迷弟小迷妹们都很一脸崇拜的看着他,聆听教诲。

好久没有这么让人陶醉的感觉了,他不由自主滔滔不绝的讲解了起来,毫无察觉自己的胳膊肘子压上了键盘,蜻蜓点水一样触了一下Enter键。

以实际行动来验证,从实践中出真知,是互联网人一贯的作风。

屏蔽起来

当这种翻车事故变得越来越多,我们就更能了解到rm的凶残。尤其是,一些不注意的条件,就让shell脚本成为触发的元凶。

电子信息不同于现实中的物品,你只要销毁了它,它可能就真的永远消失了,就如同灵魂一样。为了保证一定程度的安全,我们可以把rm命令变成一个垃圾桶。

首先,创建一个垃圾桶。

mkdir ~/.Trash &> /dev/null
chmod 777 ~/.Trash

然后,把原生的rm命令给废掉。

alias rm="sh /usr/bin/rm.sh"

简单的rm脚本可能长这个样子。

#!/bin/bash
 while [ ! -z "$1" ]; do
   mv "$1" ~/.Trash/
   shift
 done

当然,我们这只是一个简单的脚本。但无论你做的再周详,也阻止不了误删。比如,将rm -R ./lib/写成了rm -R /lib/

把文件找回来

在Linux下面,除非是作死的rm -rf /,误删一两个文件,还是有机会找回来的。要想彻底的销毁文件,你需要使用shred命令。

rm删掉的文件,其实只是将指向数据块的索引点(information nodes)释放,只要不被覆盖,数据其实还在硬盘上。

只要你删除文件之后,没有再覆写区块的数据,那就有很大概率找回来。就像你删除了一个运行时的文件,你使用lsof命令,依然能够看到/var/log/messages (deleted)类似的字样。

如果你删除的文件还被别的进程所使用,那么恭喜你,你可以直接找到它。比如使用的进程id是996,那么文件就躺在/proc/996/fd/下面。

所以不小心删掉之后,反射弧不宜过长。不能等一两天之后,突然就一哆嗦:哎吆wocao?我的文件怎么不见了?

如果并没有进程使用这些文件,那就麻烦了一些。首先,你得停止你的烂七八糟的进程,还原一个干干净净的机器,免得文件被覆盖。如果你还不放心,直接unmount分区。

然后,恢复文件还得借助工具,比如extundelete

End

如果你因为rm这把刀,伤到了自己,以至于坐牢,那你一定在一个比较2的公司。

有点安全意识到公司,肯定不会因为rm这么两个字母就停摆了。删根?不好意思,我们业务机器有多个节点,你只是xx分之一;删库?不好意思,我们有热备冷备,甚至不同的业务有不同的库表,你认为删除物理文件就能搞死公司,妄想!

但即使如此,也要管住自己的手。因为有些公司斤斤计较,并不是你想象得那么善良。不管你是主观故意还是因为手抖,最后免不了一堆麻烦。没人会为低级错误擦裤子,只能运行命令的人独自承受。

在打工、赚钱的同时,首先保护自己才是最重要的。所以,你有啥想不开的?要用rm -rf命令?仅仅是想要弘扬你侠士的风范么?

你要明白,做一个合格的小程序员,小运维,并不比理发师安全多少。宝刀在手,可以削苹果,可以开瓶盖,也可以分蛋糕,但从来不会血溅当场。因为我们是文明人。

作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。

推荐阅读:

1. 玩转Linux
2. 什么味道专辑

3. 蓝牙如梦
4. 杀机!
5. 失联的架构师,只留下一段脚本
6. 架构师写的BUG,非比寻常

以上是关于rm 好凶残,太 TM 吓人了!的主要内容,如果未能解决你的问题,请参考以下文章

ChatGPT 这玩意好吓人,真能颠覆搜索引擎?

B站好凶残,求解题

Seata 客户端需要同时启动 TM 和 RM 吗?

sh rm-tm-backups.sh

spring-data-redis 上百万的 QPS 压力太大连接失败,我 TM 人傻了

“动态规划”这词太吓人,其实可以叫“状态缓存”