無論在異次元空間中,還是在真實的世界里,有能力創造價值的人,往往也有能力去毀滅這個價值。在軟件定義的世界里,程序員往往扮演了一個創造價值的人。而有些人卻也因為無心之失成為這些價值或者數據的毀滅者,也有人因為一個烏龍指(手誤)造成不可挽回的損失。
包含了Bug的cobol代碼
在十年前的日本,曾經發生過一件因為烏龍指致使“以61萬日元的價格,賣出1股J-Com的股票”錯誤的寫成了“以每股1日元的價格,賣出61萬股”(如上圖)。導致瑞穗證券損失了約270億日元,而這次烏龍引起的市場震動,還不僅僅這一家,很多證券公司都受到牽連。而瑞穗證券也因為最后的現金交割讓其所遭受的損失擴大到400億日元!
這樣一個真實的故事不僅給當事企業帶來壓力,對于程序員而言,也不得不負起相應的責任。
無獨有偶,今年又有一家小型主機托管公司遇到了相似的事件,因為腳本錯誤,Marco Marsala不慎刪光了客戶的所有數據。
事情的緣由在于,實際參數應該是“rm -rf {foo}/{bar}”,foo和bar是腳本中動態傳遞的兩個變量。然而由于變量處理出錯,通用語法未能成功在bash命令中插值,所以最終指令就變成了可怕的“rm -rf/”。
“rm -rf/”意味著擦除根路徑“/”下掛載的所有內容而無需詢問。
事已至此,這家小型主機托管公司已是叫天天不應叫地地不靈。
綜上兩個故事告訴我們,第一:備份數據要與生產環境脫離,這樣即使出現故障,備份數據也不會丟失。第二:入行需謹慎,并不排除程序員需要為自己的Bug承擔責任的可能性。
最后,請大家慎用rm -rf/命令,雖然部分系統是可以收到提示的,但是一旦命令執行,就回天無力了……