rm好凶残,太TM吓人了!

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

 [[424665]]

图片来自 Pexels

完事之后,剃头刀上不会占有半点鲜血和毛发。我很羡慕他的刀。

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

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

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

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

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

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

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

[[424666]]

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

但现实的生活总不会让情绪发泄的太澎湃。多为多年混社会的人,我们早已经学会了忍耐。

当你的命令行输入到了 rm -rf /,会不由自主的再按下回退键。就像乌龟发现了壳外的危险,把龟头紧紧缩在壳里面。

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

安全只是暂时的

但安全,只是暂时的。

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

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

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

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

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

[[424667]]

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

屏蔽起来

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

电子信息不同于现实中的物品,你只要销毁了它,它可能就真的永远消失了,就如同灵魂一样。

为了保证一定程度的安全,我们可以把 rm 命令变成一个垃圾桶。

首先,创建一个垃圾桶。

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

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

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

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

  1. #!/bin/bash 
  2.  while [ ! -z "$1" ]; do 
  3.    mv "$1" ~/.Trash/ 
  4.    shift 
  5.  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 分之一;删库?不好意思,我们有热备冷备,甚至不同的业务有不同的库表,你认为删除物理文件就能搞死公司,妄想!

但即使如此,也要管住自己的手。因为有些公司斤斤计较,并不是你想象得那么善良。

不管你是主观故意还是因为手抖,最后免不了一堆麻烦。没人会为低级错误擦裤子,只能运行命令的人独自承受。

[[424668]]

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

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

作者:小姐姐味道

编辑:陶家龙

出处:转载自公众号小姐姐味道(ID:xjjdog)

 

责任编辑:武晓燕 来源: 小姐姐味道
相关推荐

2021-09-09 19:19:50

命令Rm 脚本

2021-11-25 07:42:11

命令Linux系统

2013-10-31 15:29:47

2018-03-22 15:11:22

Linux命令进程

2018-03-19 09:28:40

Linux 命令]吓人

2021-08-02 19:18:32

Redis缓存高并发

2024-03-07 12:45:27

PyTorch

2021-01-19 05:27:44

HTTPSECDHE算法

2020-12-16 11:18:03

Linux命令文件

2021-04-13 05:40:01

抓包蓝屏Linux

2010-06-02 11:50:42

旧电脑

2023-03-02 06:00:00

2023-01-16 14:31:40

模型AI

2024-01-26 08:18:03

2020-03-30 15:20:56

Java开发代码

2021-12-15 10:00:21

分布式事务框架

2024-01-26 07:48:10

SpringKafka提升

2022-04-11 08:56:27

AIAI算法

2024-01-05 13:26:00

KafkaTopicSpring

2013-07-18 15:57:42

点赞
收藏

51CTO技术栈公众号