秒懂!!!shell编写的脚本

【shell要求】

要求:俩类机器一共300多台,写个脚本自动清理这俩台机器里面的日志文件。
A类机器日志存放路径很统一,B类机器日志文件存放路径需要用*匹配(因为这个目录出来日志外,还有其他文件,不能删除,匹配的时候看用**./log)

Al类: /opt/cloud/log 删除3天前的日志文件
B类: / opt/cloud/instances 删除8天前的日志文件

【shell分析】

1.需要写出一个通用脚本,也就是说该脚本无论是当到A类机器还是B类机器度可以运行。
2.所以需要判断是A类还是B类机器,通过判断目录/opt/cloud/log或者/opt/cloud/instances目录的存在与否来确定是哪类机器。
3.对于 A类机器直接find即可,而B类机器需要find -name “*./log”稍微繁琐
4.找到find哪天之前的参数
5.日志文件找好后,传递给rm删除

vi gdp.sh

#!/bin/bash    
b=/opt/cloud/log/   //先用b等于这个路径的变量名
c=/opt/cloud/instances    // c等于这个路径的变量名
if [ -d $b ];then        // 判断这个文件是个目录
for l in `find $b -mtime +2`  // 这里用到一个for循环,l从`find $b -mtime +2`里拿取,`find $b -mtime +2`的意思是找到俩天前/opt/cloud/log/里的文件
do
rm -rf $l   //删除删选出来的数据
done
elif [ -d $c ];then  //如果判断出来/opt/cloud/instances是个目录,那么执行下面的操作
for k in `find $k -mtime +8` // 这里用到一个for循环,k从`find $b -mtime +8`里拿取,`find $b -mtime +2`的意思是找到俩天前/opt/cloud/instances/里的文件
do
rm -rf $k
done
fi

[root@localhost /]# mkdir -p /opt/cloud/log // 为了检验效果,那先创建目录
[root@localhost /]# cp -p /var/log/* /opt/cloud/log/ //然后把/var/log/里面的数据拷贝到/opt/cloud/log/ 目录下以便于测试
[root@localhost /]# cd /opt/cloud/log/
[root@localhost log]# ll //这边可以看下这边的时间,等执行过后再看下执行的效果
在这里插入图片描述
[root@localhost log]# cd /opt
[root@localhost opt]# chmod +x gdp.sh //给文件一个执行的权限
[root@localhost opt]# ./gdp.sh // 执行脚本文件
[root@localhost opt]# ll /opt/cloud/log //查看下执行的效果

在这里插入图片描述
已经没有之前用红色箭头标注的文件了,还有一个目录也是同理,也是创建一个目录,然后用该脚本执行,小编这边就不在演示了。

拓展一下find的常规用法

#find常规用法
#find path -option -exec shll
#找到名称以test开头的文件,并且列出大小
#find /opt -name “test*” -type f -exec ls -lh {} ;
#找到3天之前的文件
find /opt -mtime +3
#找到3天以内的文件
find /opt -mtime -3
#找到3天以上4天以内的文件
find /opt -mtime 3
#找到大小超过15M的文件
find /opt -size 15m -type f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值