经典案例:
cd ${dir_path}
rm –rf *
很正常的两条语句,进入目标目录,然后清理目录中的内容,看上去没有任何问题。但是当目录不存
在的时候,就会出大问题, 容易导致根目录被删掉。
解决办法:
删除文件时不用cd命令
修改为rm -rf ${dir_path}/*
删除文件时先判断目录是否存在
if [ -d $dir_path ]
then
…
fi
删除文件时使用&&命令
cd ${dir_path} && rm –rf *
当cd ${dir_path}失败的时候,就不会执行rm –rf *
终极方案
以上几种方案都是可行的,但是要靠开发人员的Shell功底,需要人为去保证,
难免会出现疏漏的情况。有一种方案如下:
生产环境把rm –rf 命令替换为mv命令,再写个Linux定时任务定期进行清理,
清理的时间最好设定在非人为操作,非业务高峰,非环境部署升级的时间。