rm -rf * 的正確用法


昨天有個工程師寫了一個刪除日志的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 *

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

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

 

四、判斷目錄是否存在

制定編碼規范,對目錄進行操作之前,要先判斷目錄是否存在。

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


原文鏈接:https://blog.csdn.net/z50L2O08e2u4afToR9A/java/article/details/85272137


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM