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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 一分钟不长,希望大家有收获。

昨天有个工程师写了一个删除日志的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 *

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

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

四、判断目录是否存在

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

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

一分钟不长,希望大家有收获。

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

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
springboot自定义拦截器,校验token
springboot自定义拦截器,校验token
792 6
|
大数据 Linux Android开发
Android ParcelFileDescriptor实现进程间通信
Android ParcelFileDescriptor实现进程间通信
407 0
|
存储 人工智能 运维
发展高质量存储力,中国高科技力量聚浪成潮
发展高质量存储力,中国高科技力量聚浪成潮
|
安全 Unix Linux
深入探究Linux命令:chmod
`chmod`命令在Linux和Unix系统中用于更改文件或目录的访问权限,涉及用户、所属组和其他用户三类权限。权限分为读、写和执行。命令语法包括符号模式(如`u+x`增加所有者执行权限)和八进制模式(如`755`设定特定权限)。常见应用包括设置脚本执行权限、限制敏感文件访问和调整目录默认权限。使用时需谨慎,避免影响系统运行和安全。了解`chmod`有助于保护数据安全和系统管理。
|
安全 Unix 程序员
程序员笑话常客:"rm -rf *" 和"rm -rf /*"的区别
"rm -rf *" 和 "rm -rf /*" 都经常出现在程序员的玩笑中,可他们的严重程度却是不一样的,一起来看看吧
7715 0
|
SQL Oracle 关系型数据库
一种SqlServer数据迁移到Oracle的方法总结
一种SqlServer数据迁移到Oracle的方法总结
716 0
rm -rf / 真的能删除所有东西吗?
rm -rf / 真的能删除所有东西吗?
rm -rf / 真的能删除所有东西吗?
|
设计模式
带你造轮子,自定义一个随意拖拽可吸边的悬浮View组件
在开发中,随意拖拽可吸边的View还是比较常见的,这种功能网上也有各种各样的轮子,其实写起来并不复杂,看完本文,你也可以手写一个,不到400行代码就能实现一个通用的随意拖拽可吸边的View组件。
813 1
|
存储 Kubernetes 固态存储
k8s调度之初探nodeSelector和nodeAffinity
k8s调度之初探nodeSelector和nodeAffinity
419 0
|
XML Java Android开发
修改Android设备型号、版本号、去掉自定义版本显示
修改Android设备型号、版本号、去掉自定义版本显示
1835 0