图片来自 Pexels
完事之后,剃头刀上不会占有半点鲜血和毛发。我很羡慕他的刀。
到底是他的刀厉害?还是他的人厉害?明白事理之后,我明白了是后者,而不是他手中的屠龙剃头刀!
随着年龄越来越大,我踏上了编程这条道路。一次偶然的原因,看到同事上上下翻飞的运行 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。
结语
如果你因为 rm 这把刀,伤到了自己,以至于坐牢,那你一定在一个比较 2 的公司。
有点安全意识到公司,肯定不会因为 rm 这么两个字母就停摆了。
删根?不好意思,我们业务机器有多个节点,你只是 xx 分之一;删库?不好意思,我们有热备冷备,甚至不同的业务有不同的库表,你认为删除物理文件就能搞死公司,妄想!
但即使如此,也要管住自己的手。因为有些公司斤斤计较,并不是你想象得那么善良。
不管你是主观故意还是因为手抖,最后免不了一堆麻烦。没人会为低级错误擦裤子,只能运行命令的人独自承受。
在打工、赚钱的同时,首先保护自己才是最重要的。所以,你有啥想不开的?要用 rm -rf 命令?仅仅是想要弘扬你侠士的风范么?
你要明白,做一个合格的小程序员,小运维,并不比理发师安全多少。宝刀在手,可以削苹果,可以开瓶盖,也可以分蛋糕,但从来不会血溅当场。因为我们是文明人。
作者:小姐姐味道
编辑:陶家龙
出处:转载自公众号小姐姐味道(ID:xjjdog)