rm -rf * 了咋办,跑路吗?

昨天有个工程师写了一个删除日志的bug:
web

...shell

rm -rf / home/work/logs/微信

...
架构

还好是在测试环境执行的,不然估计要跑路了。测试

画外音:一个“多了一个空格”的bug,看懂了么?编码


曾经我也干过相似的傻事,写过这样删除日志的脚本:url

...spa

cd ${log_path}.net

rm -rf *3d

...

进入到日志目录,而后把日志都删除。

画外音:看上去没有任何问题?当目录不存在时,悲剧就发生了。

 

如何避免相似的删除根目录的“惨剧”发生,有这样一些建议:


1、命令替换

在生产环境把rm -rf 命令替换为mv,再写个定时shell按期清理。

画外音:模拟了回收站的功能。

 

2、收拢权限

账号权限的分离,线上分配work账号,只可以删除/home/work/logs/目录,没法删除根目录。

画外音:大公司通常线上权限管理比较规范,小公司就未必了,搞很差全部的小伙伴都有权限在线上乱搞。

 

3、使用&&

能够经过“&&”,将

cd ${log_path}

rm -rf *

合并成一个语句

cd ${log_path} && rm -rf *

当前半句执行失败的时候,后半句再也不执行。

画外音:这个小技巧很赞。

 

4、判断目录是否存在

制定编码规范,对目录进行操做以前,要先判断目录是否存在。

画外音:靠人的自觉来保证规范的执行,总感受有些不太靠谱。固然,规范是有必要的。


一分钟不长,但愿你们有收获。

架构师之路-分享可落地的技术文章


相关推荐:

Google FileSystem架构启示

Google MapReduce到底解决什么问题?

Google BigTable到底解决什么问题?


你干过误删库,误删数据,误删目录的傻事么?

欢迎分享。

本文分享自微信公众号 - 架构师之路(road5858)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索