本文转载自微信公众号「小姐姐味道」,作者小姐姐养的狗。转载本文请联系小姐姐味道公众号。
今天感冒刚好,又找到了文风飘逸的感觉,打字手也不抖了。好久没有这么掌笔,得让新到的朋友们体验一下飞翔的感觉。否则把洒家当成了一个小小的运营,那就无趣的很。
小的时候,村里有个理发师,功夫十分了得。你在座位上坐好之后,只见刀光剑影刷刷几下,鳃毛抖动之间,就能获得满意的发型。即使是剃个光头的需求,也能快速完成。
完事之后,剃头刀上不会占有半点鲜血和毛发。
我很羡慕他的刀。
到底是他的刀厉害?还是他的人厉害?明白事理之后,我明白了是后者,而不是他手中的屠龙剃头刀!
随着年龄越来越大,我踏上了编程这条道路。一次偶然的原因,看到同事上上下翻飞的运行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。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。