那些年犯过的2(出过的BUG)
2015-12-29 16:50
253 查看
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看下是不是在我期望的目录下;或者用绝对路径删除。
背景:若干年前,项目中有一个功能,要做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看下是不是在我期望的目录下;或者用绝对路径删除。
相关文章推荐
- Ajax使用杂谈 也许也是乱弹
- 无限循环小数
- 为了51cto的奖品奋斗
- 寻找隐藏磁盘
- 勤能补拙,拙有何用?
- 转载 banq---阎宏之间的恩怨
- 网站运营之社会认同策略 人气热度的社会认同
- JAVA重点总结
- 让人爱不释手的20个网址【达人必修】
- [转载]经营人生36计
- 使用OpenSessionInViewFilter解决session关闭问题
- OpenSessionInView详解
- 没事了学学吧,全国城市名,找到真的不容易啊!
- 肯德基的企业文化
- 你员工的福利真的那么好么?
- 潜意识$意念力
- vreycd 标题中的名言名句
- 外企面试官最爱提的问题TOP10
- 用ksh编写检测http服务
- 谷歌搜索引擎的语音功能特色j