那些年犯過的2(出過的BUG)

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看下是不是在我期望的目錄下;或者用絕對路徑刪除。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章