rm -rf * 了咋辦,跑路嗎?

昨天有個工程師寫了一個刪除日誌的bug:
web

...shell

rm -rf / home/work/logs/微信

...
架構

還好是在測試環境執行的,不然估計要跑路了。測試

畫外音:一個「多了一個空格」的bug,看懂了麼?編碼


曾經我也幹過相似的傻事,寫過這樣刪除日誌的腳本:url

...spa

cd ${log_path}.net

rm -rf *3d

...

進入到日誌目錄,而後把日誌都刪除。

畫外音:看上去沒有任何問題?當目錄不存在時,悲劇就發生了。

 

如何避免相似的刪除根目錄的「慘劇」發生,有這樣一些建議:


1、命令替換

在生產環境把rm -rf 命令替換爲mv,再寫個定時shell按期清理。

畫外音:模擬了回收站的功能。

 

2、收攏權限

賬號權限的分離,線上分配work賬號,只可以刪除/home/work/logs/目錄,沒法刪除根目錄。

畫外音:大公司通常線上權限管理比較規範,小公司就未必了,搞很差全部的小夥伴都有權限在線上亂搞。

 

3、使用&&

能夠經過「&&」,將

cd ${log_path}

rm -rf *

合併成一個語句

cd ${log_path} && rm -rf *

當前半句執行失敗的時候,後半句再也不執行。

畫外音:這個小技巧很贊。

 

4、判斷目錄是否存在

制定編碼規範,對目錄進行操做以前,要先判斷目錄是否存在。

畫外音:靠人的自覺來保證規範的執行,總感受有些不太靠譜。固然,規範是有必要的。


一分鐘不長,但願你們有收穫。

架構師之路-分享可落地的技術文章


相關推薦:

Google FileSystem架構啓示

Google MapReduce到底解決什麼問題?

Google BigTable到底解決什麼問題?


你幹過誤刪庫,誤刪數據,誤刪目錄的傻事麼?

歡迎分享。

本文分享自微信公衆號 - 架構師之路(road5858)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索