那些年犯过的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
- 那些年犯过的2(出过的BUG)
- 犯过的bug
- 那些年犯过的错
- 那些年我犯过的错
- 字符上犯过的那些错误
- 那些年犯过的c++林泽阳级别的错误
- 那些年犯过的错:传参传的到底是什么
- 那些年我们犯过的错误--软件开发总结
- 那些年我所犯过的错误
- 那些年我犯过的c++sb错误
- 犯过的错
- 犯过的错误
- 犯过的错误
- 犯过的错误
- 犯过的错误
- 那些年写过的Bug——List remove
- 那些我曾经犯过的低级编程错误
- 那些日子里犯过的弱智错误
- MYSQL \ORACLE\SQL 删除主键字段
- Linux 下安装jdk
- iOS中,导入openssl静态库配置路径,自己创建.pch文件、解决openssl/rsa.h
- php无限分类 树状菜单经典代码
- "main" javax.xml.transform.TransformerConfigurationException: 无法装入 translet 类“GregorSamsa
- 那些年犯过的2(出过的BUG)
- C#中构造函数的使用
- Cocos2d-x利用jni调用java层代码
- OCX控件MSI打包升级方案
- 图片加载框架
- 将一个对象的属性值赋给另一个对象的相同的属性 这两个对象必须都符合javaBean的标准
- 两种高效的并发模式:半同步/半异步和领导者/追随者
- 利用RTFtemplate生成rtf报表
- rsyslogd 日志服务