昨天有個工程師寫了一個刪除日誌的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、判斷目錄是否存在
制定編碼規範,對目錄進行操做以前,要先判斷目錄是否存在。
畫外音:靠人的自覺來保證規範的執行,總感受有些不太靠譜。固然,規範是有必要的。
一分鐘不長,但願你們有收穫。
架構師之路-分享可落地的技術文章
相關推薦:
你幹過誤刪庫,誤刪數據,誤刪目錄的傻事麼?
歡迎分享。
本文分享自微信公衆號 - 架構師之路(road5858)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。