大坑记录 - shell脚本删除操作

背景

jenkins执行去执行shell命令,其中引用了一些jenkins的变量,如${WORKSPACE}这种,因为每次执行jenkins比较慢,于是想复制脚本出来想本地调试一下,直接复制了脚本过来执行,结果又这么一句

rm -rf ${WORKSPACE}/*

用root去执行,结果就崩盘了,发现删除了系统文件和目录,当终止的时候,已经来不及了

分析

由于${WORKSPACE}不存在,就是空了的,所以命令基本上就是rm -rf /*

然后就爆炸了,哎,只能找运维帮忙修复了的

后记

1. 权限控制,尽量不要用root,尤其是删除操作;

2. 删除逻辑加入判断,判断目录是否存在,如下:

#!/bin/bash

pwd
cd  ${WORKSPACE}
pwd

if [ ! ${WORKSPACE}];then
        exit -1;
        echo "${WORKSPACE}不存在"
else
        echo "存在"
fi

原文地址:https://www.cnblogs.com/jwentest/p/8418890.html

时间: 2024-08-13 17:22:28

大坑记录 - shell脚本删除操作的相关文章

SQL Server 2012设置某用户对某些表的记录限制其删除操作

第一步:用sa用户进入SSMS: 第二步:在安全性---用户上面点击右键---"属性": 第三步:在选择页中选择"安全对象",点击"搜索",弹出添加对象页面,这里默认为特定对象不用选择: 第四步:点击对象类型对话框,打开选择对象类型,选择"表": 第五步:对要进行加权限限制的表进行选择: 第六步:对所选择的表进行授权设置,点击完成即可.我这里主要是限制不可以删除,选择相应的表,勾选删除即可. SQL Server 2012设置

Linux 下Shell脚本删除过期文件

在写这个shell之前先说一下,stat命令的使用方法 一.关于时间戳 每一个文件都有3中时间(称为时间戳timestamps),对这3种时间,很多时候容易混淆不清,因此 这里要说明下:   Access time(atime):是指取用文件的时间,所谓取用,常见的操作有:使用编辑器查看文件内容,使用cat命令显示文件内容,使用cp命令把该文件(即来源文件)复制成其他文件,或者在这个文件上运用grep sed more less tail head 等命令,凡是读取而不修改文件的操作,均衡改变文

shell脚本删除N天前的文件夹-----附linux和mac上date命令的不同

背景: 每日构建的东西,按日期放到不同的文件夹里.如今天的构建放到2015-06-01里,明天的就放到2015-06-02里,依次类推.时间久了,需要一个脚本删除N天前的文件夹.(本例中N=7,即删除一周前的构建). 下面直接上代码,linux版: #! /bin/bash historyDir=~/test/ today=$(date +%Y-%m-%d) echo "---------today is $today-----------" tt=`date -d last-week

shell脚本方便操作记录(持续添加)

工作中经常用到的方便操作的shell命令,记录如下: 全局替换: :%s/tmp\/\"/tmp\/\$dev_id\"\_/g :%s/\$log_time_format /\[\`date \+\%Y\%m\%d\%H\%M\`\]/g 打包 tar -czvf /data/third_part_new_bak/third_part_201406161044.tar.gz --exclude=*.apk 360Safe/ common tar -czvf /data/third_p

linux下用shell脚本删除mysql记录ssc源码搭建

mysql下删除记录较多的ssc源码搭建会出现如下错误:企 娥:217 1793 408 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed. 因此需要分批删除表中数据,脚本如下: #!/bin/bashDB_USER="root"DB_PASS="pw"DB_HOS

记录shell脚本中的特殊变量

1.特殊的位置变量 关于上面的相关变量介绍,也可以参考man手册,执行命令"man bash",然后搜索关键字"Special Parameters"即可看到相关变量的解释. 2.bash shell内置的变量命令 bash Shell包含一些内置命令.这些内置命令在目录列表里是看不见的,它们由Shell本身提供.常用的内部命令有:echo.eval.exec.export.read.shift. (1)echo--在屏幕上输出信息常用参数如下: (2)export

shell脚本删除30天之前的备份文件实例

根据公司要求,删除服务器30天之前的文件,如下是脚本: #vi del-30.sh #!/bin/bash location="/mpgdata/" find $location -type f -mtime +30 -exec rm -f {} \; #chmod +x del-30.sh 说明:/mpgdata/是find查找备份文件的路径. -type f是指定文件类型为普通文件. -mtime +30是指30天之前的文件. -exec rm -f指执行静默删除匹配出来的文件.

Linux定是调用shell脚本删除文件

编写脚本 vi delbak.sh 代码如下: #!/bin/sh location="/home/mysql/backup/" find $location -mtime +7 -type f |xargs rm -f 解释: location 是设置查找的目录--mtime +7 是设置时间为7天前(删除location指定目录下7天前的文件)-type f 查找的类型为文件 代码如下: #!/bin/sh location="/home/mysql/backup/&qu

shell脚本删除指定mobileprovision

由于某种原因,xcode帮我按照了几千个开发和上线证书,需要删除这部分证书: #dir="/Users/Ethan/Library/MobileDevice/Provisioning Profiles/" dir="/Users/Ethan/Desktop/test/" filelist=`ls "${dir}"` #echo $filelist for filename in $filelist do PROFILE_FILE="${