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

来源:互联网 发布:it 知乎 编辑:程序博客网 时间:2024/05/16 00:40

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看下是不是在我期望的目录下;或者用绝对路径删除。
0 0