马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
昨天有个工程师写了一个删除日志的bug:
... rm -rf / home/work/logs/ ...
还好是在测试环境执行的,否则估计要跑路了。 画外音:一个“多了一个空格”的bug,看懂了么?
曾经我也干过类似的傻事,写过这样删除日志的脚本: ... cd ${log_path} rm -rf * ...
进入到日志目录,然后把日志都删除。 画外音:看上去没有任何问题?当目录不存在时,悲剧就发生了。 如何避免类似的删除根目录的“惨剧”发生,有这样一些建议:
一、命令替换 在生产环境把rm -rf 命令替换为mv,再写个定时shell定期清理。 画外音:模拟了回收站的功能。 二、收拢权限
帐号权限的分离,线上分配work帐号,只能够删除/home/work/logs/目录,无法删除根目录。 画外音:大公司一般线上权限管理比较规范,小公司就未必了,搞不好所有的小伙伴都有权限在线上乱搞。 三、使用&& 可以通过“&&”,将 cd ${log_path} rm -rf * 合并成一个语句 cd ${log_path} && rm -rf * 当前半句执行失败的时候,后半句不再执行。 画外音:这个小技巧很赞。 四、判断目录是否存在 制定编码规范,对目录进行操作之前,要先判断目录是否存在。 画外音:靠人的自觉来保证规范的执行,总感觉有些不太靠谱。当然,规范是有必要的。 作者:58沈剑 来源:架构师之路
|