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

上班前的時間看到了架構師之路的發文,覺得意義重大,發出來警醒自己,謹記謹記!!!

文章轉自https://mp.weixin.qq.com/s/AVGu8P5oQI4iNRRPY5h6Qw,侵刪。

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


rm -rf / home/work/logs/

還好是在測試環境執行的,否則估計要跑路了。
畫外音:一個“多了一個空格”的bug,看懂了麼?

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


cd ${log_path}
rm -rf *

進入到日誌目錄,然後把日誌都刪除。
畫外音:看上去沒有任何問題?當目錄不存在時,悲劇就發生了。

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

一、命令替換
在生產環境把rm -rf 命令替換爲mv,再寫個定時shell定期清理。
畫外音:模擬了回收站的功能。

二、收攏權限
帳號權限的分離,線上分配work帳號,只能夠刪除/home/work/logs/目錄,無法刪除根目錄。
畫外音:大公司一般線上權限管理比較規範,小公司就未必了,搞不好所有的小夥伴都有權限在線上亂搞。

三、使用&&
可以通過“&&”,將
cd ${log_path}
rm -rf *
合併成一個語句
cd ${log_path} && rm -rf *
當前半句執行失敗的時候,後半句不再執行。
畫外音:這個小技巧很贊。

四、判斷目錄是否存在
制定編碼規範,對目錄進行操作之前,要先判斷目錄是否存在。
畫外音:靠人的自覺來保證規範的執行,總感覺有些不太靠譜。當然,規範是有必要的。

一分鐘不長,希望大家有收穫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章