Rm 好兇殘,太 TM 嚇人了!
本文轉(zhuǎn)載自微信公眾號「小姐姐味道」,作者小姐姐養(yǎng)的狗。轉(zhuǎn)載本文請聯(lián)系小姐姐味道公眾號。
今天感冒剛好,又找到了文風飄逸的感覺,打字手也不抖了。好久沒有這么掌筆,得讓新到的朋友們體驗一下飛翔的感覺。否則把灑家當成了一個小小的運營,那就無趣的很。
小的時候,村里有個理發(fā)師,功夫十分了得。你在座位上坐好之后,只見刀光劍影刷刷幾下,鰓毛抖動之間,就能獲得滿意的發(fā)型。即使是剃個光頭的需求,也能快速完成。
完事之后,剃頭刀上不會占有半點鮮血和毛發(fā)。
我很羨慕他的刀。
到底是他的刀厲害?還是他的人厲害?明白事理之后,我明白了是后者,而不是他手中的屠龍?zhí)觐^刀!
隨著年齡越來越大,我踏上了編程這條道路。一次偶然的原因,看到同事上上下翻飛的運行rm命令,勾起了我久遠的、對刀的回憶。
跨上一把刀,行走天下,是一件非常瀟灑的事。rm這個命令,圓你的武俠夢,很合適。只要它所到之處,玉石俱焚,寸草不生。
獲取這把刀的成本很低,你只要會使用Linux就行了。顯然,人人都擁有這么犀利的刀,會引起混亂。
如果你的功力不夠,掌控不了這把刀,那么就會被它反噬;如果你對它不尊重,它也會誤傷到你自己,不留一點情面;如果你心存惡念,它就能在瞬間滿足你。
每一年,都有好多人因為舞刀傷到了自己,或者傷了人進了局子。
在rm命令的刀下,是無數(shù)血淚堆砌的故事,每個故事都讓你潸然淚下,或者露出兔死狐悲的哀傷。
rm這個命令,到底是殺雞刀,還是殺牛刀?要看掌刀的人;是束之高閣,還是藏在袖中,要看是否還心存熱血。
但現(xiàn)實的生活總不會讓情緒發(fā)泄的太澎湃。多為多年混社會的人,我們早已經(jīng)學(xué)會了忍耐。當你的命令行輸入到了rm -rf /,會不由自主的再按下回退鍵。就像烏龜發(fā)現(xiàn)了殼外的危險,把龜頭緊緊縮在殼里面。
雖然憋屈了一點,但畢竟安全。
安全只是暫時的
但安全,只是暫時的。
有一次,有一個偉大的布道者,和自己的小弟們普及命令行知識。他聊到了rm -rf。
出于對寶刀的熱愛,就像真正愛刀的人,會用自己的舌頭和口水,舔凈刀上污漬直到一塵不染。他打開了一個命令行終端,輸入了rm -rf /這個命令。
“這是一個危險的命令!”,他說,“你們永遠不要在線上環(huán)境運行”。
旁邊的小迷弟小迷妹們都很一臉崇拜的看著他,聆聽教誨。
好久沒有這么讓人陶醉的感覺了,他不由自主滔滔不絕的講解了起來,毫無察覺自己的胳膊肘子壓上了鍵盤,蜻蜓點水一樣觸了一下Enter鍵。
以實際行動來驗證,從實踐中出真知,是互聯(lián)網(wǎng)人一貫的作風。
屏蔽起來
當這種翻車事故變得越來越多,我們就更能了解到rm的兇殘。尤其是,一些不注意的條件,就讓shell腳本成為觸發(fā)的元兇。
電子信息不同于現(xiàn)實中的物品,你只要銷毀了它,它可能就真的永遠消失了,就如同靈魂一樣。為了保證一定程度的安全,我們可以把rm命令變成一個垃圾桶。
首先,創(chuàng)建一個垃圾桶。
- 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刪掉的文件,其實只是將指向數(shù)據(jù)塊的索引點(information nodes)釋放,只要不被覆蓋,數(shù)據(jù)其實還在硬盤上。
只要你刪除文件之后,沒有再覆寫區(qū)塊的數(shù)據(jù),那就有很大概率找回來。就像你刪除了一個運行時的文件,你使用lsof命令,依然能夠看到/var/log/messages (deleted)類似的字樣。
如果你刪除的文件還被別的進程所使用,那么恭喜你,你可以直接找到它。比如使用的進程id是996,那么文件就躺在/proc/996/fd/下面。
所以不小心刪掉之后,反射弧不宜過長。不能等一兩天之后,突然就一哆嗦:哎吆wocao?我的文件怎么不見了?
如果并沒有進程使用這些文件,那就麻煩了一些。首先,你得停止你的爛七八糟的進程,還原一個干干凈凈的機器,免得文件被覆蓋。如果你還不放心,直接unmount分區(qū)。
然后,恢復(fù)文件還得借助工具,比如extundelete。
End
如果你因為rm這把刀,傷到了自己,以至于坐牢,那你一定在一個比較2的公司。
有點安全意識到公司,肯定不會因為rm這么兩個字母就停擺了。刪根?不好意思,我們業(yè)務(wù)機器有多個節(jié)點,你只是xx分之一;刪庫?不好意思,我們有熱備冷備,甚至不同的業(yè)務(wù)有不同的庫表,你認為刪除物理文件就能搞死公司,妄想!
但即使如此,也要管住自己的手。因為有些公司斤斤計較,并不是你想象得那么善良。不管你是主觀故意還是因為手抖,最后免不了一堆麻煩。沒人會為低級錯誤擦褲子,只能運行命令的人獨自承受。
在打工、賺錢的同時,首先保護自己才是最重要的。所以,你有啥想不開的?要用rm -rf命令?僅僅是想要弘揚你俠士的風范么?
你要明白,做一個合格的小程序員,小運維,并不比理發(fā)師安全多少。寶刀在手,可以削蘋果,可以開瓶蓋,也可以分蛋糕,但從來不會血濺當場。因為我們是文明人。
作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。