zoukankan      html  css  js  c++  java
  • rm -rf * 的正确用法

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

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

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

    四、判断目录是否存在

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

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


    原文链接:https://blog.csdn.net/z50L2O08e2u4afToR9A/java/article/details/85272137

  • 相关阅读:
    C++的开源跨平台日志库glog学习研究(一)
    C++实现的字符串模糊匹配
    Git&GitHub学习日志
    UTF-8和GBK等中文字符编码格式介绍及相互转换
    HDU
    340. 通信线路(分层图最短路)
    ACwing 你能回答这些问题吗(线段树求最大连续字段和)
    Laptop(线段树+离散化)
    Infinite Inversions(树状数组+离散化)
    HDU-4417-Super Mario(主席树解法)
  • 原文地址:https://www.cnblogs.com/KdeS/p/12768492.html
Copyright © 2011-2022 走看看