1:程序中執行Linux的rm腳本,項目中所有內容被刪除。
背景:若干年前,項目中有一個功能,要做PHP的項目發佈功能;其實只是checkout到我們服務器的一個目錄下,然後rsync到遠程服務器。
當時要更新某個文件(文件夾),需要刪除重新遷下來(不記得爲什麼不直接update了)。所以通過Java執行Linux命令:1:cd到指定目錄;2:rm -rf *。cd的目錄是配置文件配置的,結果悲劇了,配置文件配置的目錄,在Linux服務器上,沒有創建,所以cd失敗了,接着執行rm,當時把項目下所有東西都刪了,
還好不是在根目錄,算是不幸中的萬幸吧
總結:對於服務器的操作,都要報懷疑的態度。1:所有的操作,都驗證是否執行成功。2:所有的rm,都改成絕對路徑2:複製粘貼的代碼,沒改全
背景:上家遊戲公司,在做一個功能時,複製了一部分代碼,因爲任務緊急,也沒時間想代碼重構的事情了,先拿來用。因爲少了一個變量沒有替換掉,QA也沒有測出來,
結果上線之後,你懂的。
總結:開發過程中,千萬千萬慎用複製,尤其成段代碼的copy,這種時候,要想想代碼重構了;迫不得已時,一定要檢查檢查在檢查3:執行rm -rf刪除服務器所有東西
背景:在做Solr的時候,有個collection創建不成功,delete時,沒有成功刪除,solrHome下還有,所以就cd到solrHome下,執行rm -rf collection_xxx*(當初出現了2個分片文 件) 刪除了, 結果因爲一些平時的惡習,手一抖寫成了“rm -rf * collection_xxx*”,把所有的collection都刪掉了,線上服務器啊,各種悔啊。
總結:1:線上服務器,即便麻煩一些,也不要用*來刪除,一旦出錯,很難恢復。尤其像我們這種項目,即便數據恢復了,可能也已經是錯誤的數據了。
2:rm之前,pwd看下是不是在我期望的目錄下;或者用絕對路徑刪除。